Module: Mongoid::Sequencer::ClassMethods
- Defined in:
- lib/mongoid/sequencer.rb
Instance Method Summary collapse
- #next_sequence_value(field_name) ⇒ Object
- #reset_sequence(field_name) ⇒ Object
- #sequence(field_name) ⇒ Object
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 |