Module: ActiveRecordUuid::Model::ClassMethods

Defined in:
lib/active_record_uuid/model.rb

Instance Method Summary collapse

Instance Method Details

#generate_uuidObject



48
49
50
# File 'lib/active_record_uuid/model.rb', line 48

def generate_uuid
  UUIDTools::UUID.send("#{uuid_config.generator}_create").to_s
end

#has_uuid(options = {}) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/active_record_uuid/model.rb', line 67

def has_uuid(options = {})
  options = ActiveRecordUuid.config.to_hash.merge(options)
  @uuid_config = ActiveRecordUuid::Config.new(options)
  
  column_name = uuid_config.column.to_sym
  self.primary_key              = column_name if uuid_config.primary_key
  self.serialize                column_name, ActiveRecordUuid::Serializer.new(uuid_config.store_as)
  self.send(uuid_config.hook,   :assign_uuid_when_blank)
  self.validates_uniqueness_of  column_name, :if => Proc.new { |r| r.uuid_value.present? }
  self.validate                 :validates_uuid, :if => Proc.new { |r| r.uuid_value.present? }
  self.send(:extend, ActiveRecordUuid::AssociationMethods) if uuid_config.association
end

#uuid_config(&block) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/active_record_uuid/model.rb', line 52

def uuid_config(&block)
  return @uuid_config if @uuid_config.present?
  
  @uuid_config = ActiveRecordUuid::Config.new
  if block_given?
    @uuid_config.instance_eval(&block)
    @uuid_config.validate_options!
  end
  
  # apply uuid based on config
  has_uuid(@uuid_config.to_hash)
  
  @uuid_config
end