module ActiveRecord::SecureUuid::ClassMethods
Public Instance Methods
generate_unique_uuid()
click to toggle source
# File lib/has_secure_uuid.rb, line 37 def generate_unique_uuid SecureRandom.uuid end
has_secure_uuid(attribute = :uuid)
click to toggle source
Example using has_secure_uuid
# Schema: User(identifier:string, identifier:string) class User < ActiveRecord::Base has_secure_uuid has_secure_uuid :identifier end user = User.new user.save user.uuid # => "245f9ae1-9f8d-4a0e-817d-8ba3e4d663c1" user.identifier # => "93712506-fe9e-4ae9-a713-53c67cd9bccc" user.regenerate_identifier # => true user.regenerate_uuid # => true
Note that it's still possible to generate a race condition in the database in the same way that validates_uniqueness_of
can. You're encouraged to add a unique index in the database to deal with this even more unlikely scenario.
# File lib/has_secure_uuid.rb, line 28 def has_secure_uuid(attribute = :uuid) define_method("regenerate_#{attribute}") do update_attributes attribute => self.class.generate_unique_uuid end before_create do send("#{attribute}=", self.class.generate_unique_uuid) unless send("#{attribute}?") end end