MongoMapper - 手动设置一个失败的ObjectId“非法ObjectID格式”

时间:2010-08-03 01:27:16

标签: ruby mongodb ruby-on-rails-3 mongomapper

我有一个简单的模型对象:

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守护进程,所以没有一个奇怪的连接问题。非常感谢任何指针。

2 个答案:

答案 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