ruby - MongoMapper - 手动设置 ObjectId 失败并显示 "illegal ObjectID format"

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

最佳答案

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

你可能想要:

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

关于ruby - MongoMapper - 手动设置 ObjectId 失败并显示 "illegal ObjectID format",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393006/

相关文章:

node.js - Mongoose 可选的搜索查询参数?

mysql - Rails 中避免 mysql 查询的策略

ruby-on-rails - 在 rake 任务中执行 'sudo su' 命令

ruby-on-rails - Rails 中基于角色的属性安全机制

ruby - 如果它是标点符号,我怎么能从字符串中删除最后一个字符,在 ruby​​ 中?

Ruby Sequel 模型对创建和不更新进行验证

mongodb - 导入csv到mongodb数据库

mongodb - mongodb中单个查询的多个计数

ruby - 如何测试使用 rspec 的 block 的函数

ruby-on-rails - 为什么在 Rails 中使用 %w[]?