Mongoid.master.collection("seq").find_and_modify({
:query => {:_id => self.class.name},
:update => {'$inc' => {:next => 1}},
:new => true,
:upsert => true
})["next"]
它在mongoid 2.4.9中运行良好,但是当我使用mongoid 3.0.0时,我收到了错误
NoMethodError in PostsController#new
undefined method `master' for Mongoid:Module
Mongoid 3.0.0不支持Mongoid.master?
答案 0 :(得分:3)
因为Mongoid 3.0.0使用Moped而不是Mongo Ruby Driver,所以旧的API不会调用。
你可以试试这个:
Mongoid::Sessions.default.command({:findAndModify => "seq",
:query => { :_id => self.class.name },
:update => { "$inc" => { :next => 1 } },
:upsert => true,
:new => true })
你可以使用这个Gem来做自动增量id功能: https://github.com/huacnlee/mongoid_auto_increment_id