我在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)
关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
您的旧密钥可能是字符串或整数,而不是BSON :: ObjectId实例。您可能需要编写一个使它们保持一致的迁移because earlier versions of Mongoid didn't typecast the id。