module ModelId::Base

Attributes

last_model_id[RW]
model_id_instances[RW]
model_id_mutex[RW]

Public Class Methods

included(base) click to toggle source
# File lib/model_id/base.rb, line 20
def self.included(base)
  base.class_eval do
    class << self
      attr_accessor :last_model_id, :model_id_mutex, :model_id_instances
    end
  end
  base.extend ClassMethods
  base.last_model_id = 0
  base.model_id_mutex = Mutex.new
  base.model_id_instances = {}
  base.prepend Ruby2Initializer if base.respond_to? :prepend
end

Public Instance Methods

delete_model() click to toggle source
# File lib/model_id/base.rb, line 16
def delete_model
  self.class.model_id_instances.delete @model_id
end
model_id() click to toggle source
# File lib/model_id/base.rb, line 4
def model_id
  @model_id
end
set_next_model_id() click to toggle source
# File lib/model_id/base.rb, line 8
def set_next_model_id
  self.class.model_id_mutex.synchronize do
    @model_id = self.class.last_model_id + 1
    self.class.last_model_id = @model_id
  end
  self.class.model_id_instances[@model_id] = self
end