Module: UniqNumberId::ClassMethods

Defined in:
lib/uniq_number_id.rb

Overview

Example using Active Record:

# Schema: User(member_number:integer)
class User < ActiveRecord::Base
  uniq_number_id :member_number, length: 5
end

user = User.new
user.save
user.member_number # => 17263
user.renew_member_number # => true, will update member_number with a new number

Instance Method Summary collapse

Instance Method Details

#uniq_number_id(*args) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/uniq_number_id.rb', line 22

def uniq_number_id(*args)
  include InstanceMethodsOnCallback
  cattr_accessor :number_columns, :options
  options = args.extract_options!

  length = options.fetch(:length, 8)
  bytes = ((length*3.0)/2.0)
  bytes = 8 if bytes < 8

  args.each do |attr|
    define_method("renew_#{attr}") do
      send(:generate_uniq_number_id, attr, bytes, length)
      save
    end
  end

  before_create do
    args.each do |attr|
      self.generate_uniq_number_id(attr, bytes, length)
    end
  end
end