MongoID find或find_by

Leo*_*opd 14 ruby mongodb mongoid

MongoID 文档似乎很清楚,我应该能够运行它并让它工作:

Band.find_by(name: "Photek")
Run Code Online (Sandbox Code Playgroud)

但至少在MongoID 2.4.11这给了我一个NoMethodError.

另一方面,这有效:

Band.find(name: "Photek")
Run Code Online (Sandbox Code Playgroud)

这是很容易改变find_byfind,但我很困惑这是怎么回事.这是我的宝石版本落后于文档的情况,还是什么?

小智 17

Mongoid文档现在默认显示版本3(它是RC).你想看看文档这里的Mongoid 2.

findvs上find_by,这是来自Mongoid 2 - > 3 的升级指南:

Model.find和model.relation.find现在只需要一个或多个id.Model.first,Model.last也不再接受参数.对于这些使用Model.find_by而不是.

IOW:

Mongoid 2:

Band.find(some_id)
Band.find(name: "Billy Talent")
Run Code Online (Sandbox Code Playgroud)

Mongoid 3:

Band.find(some_id)
Band.find(some_id, some_other_id)
Band.find_by(name: "Billy Talent")
Run Code Online (Sandbox Code Playgroud)