Rails 3: Generate unique codes (coupons)
In Ruby's standard library there is SecureRandom
for this:
SecureRandom.hex(3)
The length of the output is double of what the length input specified.
What you want is to generate a GUID. See here:
guid generator in ruby
You can do something like this too:
chars = ('a'..'z').to_a + ('A'..'Z').to_a
def String.random_alphanumeric(size=16)
(0...size).collect { chars[Kernel.rand(chars.length)] }.join
end
But then you would have to compare against a database to make sure it is not used yet.
Maybe try this, seems to be more proof than just generating some random key. They say: UUID generator for producing universally unique identifiers based on RFC 4122 (http://www.ietf.org/rfc/rfc4122.txt). http://rubygems.org/gems/uuid
gem install uuid
cd /myproject/path
uuid-setup
In your code
require_gem 'uuid'
my_unique_id_var = UUID.new
Reference: http://railsforum.com/viewtopic.php?id=12616#p44545