Mongoid Sequence allows you to specify fields to behave like a sequence number (exactly like the "id" column in conventional SQL flavors).
This gem was inspired by a couple of gists by masatomo and ShogunPanda.
Include Mongoid::Sequence in your class and call sequence(:field).
Like this:
class Sequenced
include Mongoid::Document
include Mongoid::Sequence
field :my_sequence, :type => Integer
sequence :my_sequence
end
s1 = Sequenced.create
s1.sequence #=> 1
s2 = Sequenced.create
s2.sequence #=> 2 # and so onIt is possible to add an additional discriminator to the sequence (e.g. a tenant id)
class Sequenced
include Mongoid::Document
include Mongoid::Sequence
field :my_sequence, :type => Integer
belongs_to :organization
sequence :my_sequence, :organization_id
endIt's also possible to make the id field behave like this:
class Sequenced
include Mongoid::Document
include Mongoid::Sequence
sequence :_id
end
s1 = Sequenced.create
s1.id #=> 1
s2 = Sequenced.create
s2.id #=> 2 # and so onMongoid::Sequence uses the atomic findAndModify command, so you shouldn't have to worry about the sequence's consistency.
Just add it to your projects' Gemfile:
gem "mongoid-sequence"Copyright © 2010 Gonçalo Silva, released under the MIT license