【问题标题】:MongoMapper - manually setting an ObjectId failing with "illegal ObjectID format"MongoMapper - 手动设置 ObjectId 失败,“非法 ObjectID 格式”
【发布时间】:2010-08-03 01:27:15
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    你可能想要:

    key :idea_id, BSON::ObjectID, :index => true
    

    【讨论】:

      【解决方案2】:

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

      user_rating.idea_id = idea.id

      【讨论】:

      • 哇,这个人!感谢您输入约翰。就我而言,我从表单帖子中收到了想法的 ID。我真的不想打 mongo 只是为了获得我已经拥有的 id。可以这样做:user_rating.idea_id = Idea.new(:id => params[:idea_id]).id
      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2017-10-24
      • 2018-01-06
      • 2015-09-30
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多