Module: Hatio::StringfiedID::ClassMethods
- Defined in:
- lib/hatio-core/active_record/stringified_id.rb
Instance Method Summary collapse
- #meaningful_id(composite = [:domain_id, :name], separator = nil, options = {}) ⇒ Object
- #next_self_sequence(field, seqlen = 6, key = nil) ⇒ Object
- #self_sequence_id(seqlen = 16, composite = [:domain_id, ''], separator = nil, &block) ⇒ Object
- #universal_unique_id ⇒ Object
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, = {}) 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_id ⇒ Object
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 |