我有一个简单的模型对象:
class UserRating
include MongoMapper::EmbeddedDocument
key :idea_id, ObjectId
key :rating, Integer
end
我正在尝试使用以下方法在此对象上设置Idea_Id: user_rating.idea_id = ObjectId.new
抛出:“非法的ObjectID格式”
这肯定看似简单的代码......我注意到的唯一奇怪的是ObjectID!= ObjectId。这可能只是错误消息的问题。不确定。非常简单的代码。不知道为什么我不能使它工作。如果它有帮助,这是在Cucumber测试中的Rails 3 Beta 4项目的上下文中。我成功地击中了mongodb守护进程,所以没有一个奇怪的连接问题。非常感谢任何指针。
答案 0 :(得分:3)
MongoMapper有一个名为ObjectId的代理对象 - 在这种情况下,你需要一个BSON :: ObjectID,它代表一个存储在mongodb本身的ID。
你可能想要:
key :idea_id, BSON::ObjectID, :index => true
答案 1 :(得分:2)
不,你想要ObjectId。当您指定时,您将要传递为每个MM模型生成的实际对象ID。
user_rating.idea_id = idea.id