3

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

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 守护进程,所以没有奇怪的连接问题。真的很感激任何指示。

4

2 回答 2

3

MongoMapper 有一个名为 ObjectId 的代理对象 - 在这种情况下,您需要一个 BSON::ObjectID,它表示一个 ID,因为它存储在 mongodb 本身中。

你可能想要:

key :idea_id, BSON::ObjectID, :index => true
于 2010-08-03T02:19:45.913 回答
2

不,你想要 ObjectId。当您指定时,您需要传递为每个 MM 模型生成的实际对象 ID。

user_rating.idea_id = idea.id

于 2010-08-04T04:36:53.960 回答