Sha256: 5fad7d069aaccaf7c8f02941908b170eed50e4f958d00df0423b0f3de304a751

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

module Skr
    module Concerns

        # @see ClassMethods
        module RandomHashCode

            extend ActiveSupport::Concern

            # ### Random Hash Code Concern
            # This adds the {#has_random_hash_code} class method
            module ClassMethods

                # A random string that identifies an entity, such as a Customer, or Vendor
                # The code is generated by {Skr::Strings.random} for new records
                # It's useful for generating *magic* links for 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

                def has_random_hash_code( field_name: :hash_code, length: 12 )

                    validates field_name, :presence=>{
                        :message=>"hash code is not set (should be automatically chosen)"
                    }

                    scope :with_hash_code, lambda{ | code |
                        where({ :hash_code=>code })
                    }

                    before_validation(:on=>:create) do
                        self[ field_name ] = Lanes::Strings.random( length ) if self[ field_name ].blank?
                    end

                end
            end

        end

    end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
stockor-0.5.0 lib/skr/concerns/random_hash_code.rb
stockor-0.4.0 lib/skr/concerns/random_hash_code.rb
stockor-0.3.0 lib/skr/concerns/random_hash_code.rb
stockor-0.2 lib/skr/concerns/random_hash_code.rb
stockor-0.1.9 lib/skr/concerns/random_hash_code.rb
stockor-0.1.8 lib/skr/concerns/random_hash_code.rb
stockor-0.1.7 lib/skr/concerns/random_hash_code.rb
stockor-0.1.5 lib/skr/concerns/random_hash_code.rb