2012-05-06 3 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, поэтому старый 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