Module: Mongoid::Sequencer::ClassMethods

Defined in:
lib/mongoid/sequencer.rb

Instance Method Summary collapse

Instance Method Details

#next_sequence_value(field_name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/mongoid/sequencer.rb', line 13

def next_sequence_value(field_name)
  collection = ::Mongoid.default_session[:__sequence]
  counter_id = "#{self.name.underscore}_#{field_name}"

  collection.find(
    _id: counter_id
  ).modify(
    {'$inc' => {value: 1}}, new: true, upsert: true
  ).fetch('value')
end

#reset_sequence(field_name) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/mongoid/sequencer.rb', line 24

def reset_sequence(field_name)  
  collection = ::Mongoid.default_session[:__sequence]
  counter_id = "#{self.name.underscore}_#{field_name}"
  
  collection.find(
    _id: counter_id
  ).modify(
    {'$set' => {value: 0}}, new: true, upsert: true
  ).fetch('value')
end

#sequence(field_name) ⇒ Object



8
9
10
11
# File 'lib/mongoid/sequencer.rb', line 8

def sequence(field_name)
  field_name = field_name.to_s
  field field_name, default: lambda { self.class.next_sequence_value(field_name) }
end