Mongoid найти VS, где

Мне кажется, что эта проблема возникает только с одной конкретной моделью, когда я ищу по ID

>> Cart.where(:_id => '4dae5902e1607c232c000009').first
=> #<Cart _id: 4dae5902e1607c232c000009, _id: BSON::ObjectId('4dae5902e1607c232c000009'), _type: nil>
>> Cart.find('4dae5902e1607c232c000009')
Mongoid::Errors::DocumentNotFound: Document not found for class Cart with id(s) 4dae5902e1607c232c000009.

странно, что с другими моделями я могу использовать find просто отлично. любые идеи?

остальная часть стека...

from /Library/Ruby/Gems/1.8/gems/mongoid-2.0.1/lib/mongoid/criterion/inclusion.rb:192:in `execute_or_raise'
from /Library/Ruby/Gems/1.8/gems/mongoid-2.0.1/lib/mongoid/criterion/inclusion.rb:190:in `tap'
from /Library/Ruby/Gems/1.8/gems/mongoid-2.0.1/lib/mongoid/criterion/inclusion.rb:190:in `execute_or_raise'
from /Library/Ruby/Gems/1.8/gems/mongoid-2.0.1/lib/mongoid/criterion/inclusion.rb:106:in `find'
from /Library/Ruby/Gems/1.8/gems/mongoid-2.0.1/lib/mongoid/finders.rb:67:in `find'
from (irb):37

Ответ 1

Обычно проблема в другом. В случае сбоя и поиска работы.

Это связано с тем, что не следует вводить id в BSON:: ObjectId перед запросом.

Обычно вам нужно будет это сделать

Cart.where(:_id => BSON::ObjectId('4dae5902e1607c232c000009')).first

Это заставляет меня думать, что ваши идентификаторы хранятся как строки, а не BSON: ObjectId и объяснят, почему find не удается (он ищет BSON:: ObjectId, а не строку)

Также можно объяснить, почему это только одна модель, поскольку она полностью зависит от того, как хранятся объекты.

Надеюсь, что поможет