Mongoid 3.0.0 undefined方法`master'for Mongoid:Module

时间:2012-05-06 09:33:44

标签: mongoid

 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?

1 个答案:

答案 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