2012-05-06 9 views
2
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を使用する場合、私はエラーMongoid 3.0.0未定義のメソッドMongoidのための `のマスター」:モジュール

NoMethodError in PostsController#new 

undefined method `master' for Mongoid:Module 

Mongoid 3.0を得ました。 0はMongoid.masterをサポートしていませんか?

答えて

3

Mongoid 3.0.0はMongo Ruby Driverの代わりにMopedを使用していたので、古いAPIでは呼び出すことができません。

Mongoid::Sessions.default.command({:findAndModify => "seq", 
             :query => { :_id => self.class.name }, 
             :update => { "$inc" => { :next => 1 } }, 
             :upsert => true, 
             :new => true }) 

そして、あなたは自動インクリメントID機能行うには、この宝石を使用することができます:

あなたはこれを試すことができます https://github.com/huacnlee/mongoid_auto_increment_id

関連する問題