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 on
It 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
end
It'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 on
Mongoid::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