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?
Отговори:
3 за отговор № 1Тъй като Mongoid 3.0.0 беше използван Moped вместо Mongo Ruby драйвер, така че старият API не може да не се обажда.
Можете да опитате това:
Mongoid::Sessions.default.command({:findAndModify => "seq",
:query => { :_id => self.class.name },
:update => { "$inc" => { :next => 1 } },
:upsert => true,
:new => true })
И можете да използвате тази Gem, за да направите функция за автоматично увеличаване на идентификацията: https://github.com/huacnlee/mongoid_auto_increment_id