Module: Hatio::StringfiedID::ClassMethods

Defined in:
lib/hatio-core/active_record/stringified_id.rb

Instance Method Summary collapse

Instance Method Details

#meaningful_id(composite = [:domain_id, :name], separator = nil, options = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/hatio-core/active_record/stringified_id.rb', line 20

def meaningful_id(composite = [:domain_id, :name], separator = nil, options = {})
  self.meaningful_composite_key = composite.clone
  self.meaningful_id_separator = separator

  composite.each do |field|
    validates_presence_of field
  end
  
  # Soft Delete 지원으로 이 부분은 수동으로 추가하는 것으로 변경 
  # validates_uniqueness_of composite.pop, :scope => composite
  
  before_create :set_meaningful_id
end

#next_self_sequence(field, seqlen = 6, key = nil) ⇒ Object



48
49
50
51
52
# File 'lib/hatio-core/active_record/stringified_id.rb', line 48

def next_self_sequence(field, seqlen = 6, key = nil)
  key = yield if block_given?
  maxrec = self.find(:first, :select => "max(substr(#{field.to_s}, #{key.length + 1}, #{key.length + seqlen})) + 1 #{field.to_s}", :conditions => ["#{field.to_s} like ?", "#{key}%"])
  key + sprintf("%0#{seqlen}d", maxrec[field.to_sym].nil? ? 1 : maxrec[field.to_sym])
end

#self_sequence_id(seqlen = 16, composite = [:domain_id, ''], separator = nil, &block) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/hatio-core/active_record/stringified_id.rb', line 38

def self_sequence_id(seqlen = 16, composite = [:domain_id, ''], separator = nil, &block)
  self.meaningful_composite_key = composite.clone
  self.meaningful_id_separator = separator

  self.self_sequence_block = block
  self.self_sequence_length = seqlen

  before_create :set_self_sequence_as_id
end

#universal_unique_idObject



34
35
36
# File 'lib/hatio-core/active_record/stringified_id.rb', line 34

def universal_unique_id
  before_create :set_uuid_as_id
end