Sha256: a267a58748e5d225844dfe1d16297290d531b93dd80e7d354f9adcdb9713a76a

Contents?: true

Size: 731 Bytes

Versions: 1

Compression:

Stored size: 731 Bytes

Contents

module ActsAsKeyed
  module InstanceMethods

    def to_param
      options[:as_param] ? self.key : self.id.to_s
    end

    def regenerate_key!
      self.create_key
      self.save
    end

    def key=(val)
      write_attribute(options[:column], val)
    end

    def key
      read_attribute(options[:column])
    end

    protected

    def create_key
      k = nil
      100.times do
        k = random_key
        break if !self.class.key_exists?(k)
        k = nil
      end
      raise NoAvailableKeysError if k.nil?
      self.key = k
    end

    def random_key
      code_array=[]
      1.upto(options[:size]) { code_array << options[:chars][rand(options[:chars].length)] }
      code_array.join('')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
acts_as_keyed-0.1.2 lib/acts_as_keyed/instance_methods.rb