Почему я не могу получить документы Mongoid, используя мой старый формат _id? - PullRequest
1 голос
/ 25 июля 2011

У меня есть модель в приложении Rails / Mongoid, для которой я изначально установил ключ, используя key: uid (где: uid является атрибутом)

Я удаляю это, чтобы модель вернулась к использованию формата _id по умолчанию. Однако существующие объекты не отражают это изменение.

например, для объекта с uid: 507, _id по-прежнему 507. Таким образом, я могу получить его, используя Testobjects.where(_id: "507")

однако Testobjects.find("507") возвращает BSON::InvalidObjectId: illegal ObjectId format

(использование BSON::ObjectId('507') дает ту же ошибку)

поэтому теперь я не могу получить старые объекты, используя find (потому что он не распознает их _id, и я не могу получить новый _id)

есть идеи как это исправить?

1 Ответ

2 голосов
/ 25 июля 2011

Ваши старые ключи, вероятно, были строками или целыми числами, а не экземплярами BSON :: ObjectId. Возможно, вам понадобится написать миграцию, которая сделает их согласованными, , поскольку более ранние версии Mongoid не вводили id .

.
...