MongoMapper - ручная установка сбоя ObjectId с «недопустимым форматом ObjectID» - PullRequest
3 голосов
/ 03 августа 2010

У меня есть простой объект модели:

class UserRating
include MongoMapper::EmbeddedDocument       
key :idea_id, ObjectId
key :rating, Integer
end

Я пытаюсь установить Idea_Id для этого объекта с помощью: user_rating.idea_id = ObjectId.new

Это выдает: "Недопустимый формат ObjectID"

Это похоже на простой код ... Единственная странность, которую я замечаю, это то, что ObjectID! = ObjectId. Это может быть просто проблема с сообщением об ошибке. Точно сказать не могу. Очень простой код Понятия не имею, почему я не могу заставить это работать. Если это помогает, это в контексте проекта Rails 3 Beta 4 внутри теста Cucumber. Я успешно работаю с демоном mongodb, поэтому не возникает странных проблем с подключением. Буду очень признателен за любые указатели.

Ответы [ 2 ]

3 голосов
/ 03 августа 2010

MongoMapper имеет прокси-объект с именем ObjectId - в этом случае вам нужен BSON :: ObjectID, который представляет идентификатор, хранящийся в самом mongodb.

Вы, вероятно, хотите:

key :idea_id, BSON::ObjectID, :index => true
2 голосов
/ 04 августа 2010

Нет, вы хотите ObjectId. Когда вы назначаете это, вы хотите передать фактический идентификатор объекта, который генерируется для каждой модели ММ.

user_rating.idea_id = idea.id

...