module Hippo::Concerns::RandomIdentifer::ClassMethods
### Random Identifier Concern This adds the {#has_random_hash_code} class method
Public Instance Methods
has_random_identifier(field_name: :identifier, length: 12)
click to toggle source
A random string that identifies an model The code is generated by {Hippo::Strings.random} for new records It's useful for generating links for anonymous access to an entity that cannot be guessed. @param field_name [Symbol] which field should the hash_code be stored in @param length [Integer] how long the hash_code should be
# File lib/hippo/concerns/random_identifier.rb, line 18 def has_random_identifier(field_name: :identifier, length: 12) validates field_name, presence: { message: "random identifier is not set (should be automatically chosen)" } before_validation(on: :create) do 5.times do if self[field_name].blank? code = Hippo::Strings.random(length) self[field_name] = code if self.class.where("#{field_name}" => code).none? end break if self[field_name].present? end end end