MongoMapper has_many关联

Seb*_*ian 3 ruby ruby-on-rails mongodb mongomapper

我有mongomapper协会的问题.我有一个类名User和其他名为Model的.用户有很多型号,但......

user = User.first
=> <User ...
user.models
=> []
Model.find_by_user_id(user.id.to_s)
=> <Model ...
Model.find_by_user_id(user.id.to_s).user == user
=> true
Run Code Online (Sandbox Code Playgroud)

类代码(简化):

class User
  include MongoMapper::Document

  # some keys definition

  many :models
end

class Model
  include MongoMapper::Document

  # some keys definitions

  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Sco*_*ler 5

看来MM不再使用String格式作为FK列,所以

Model.find_by_user_id(user.id.to_s)
Run Code Online (Sandbox Code Playgroud)

应该

Model.find_by_user_id(user.id)
Run Code Online (Sandbox Code Playgroud)

此外,Model.user_id列的数据类型应设置为

key :user_id, Mongo::ObjectID
Run Code Online (Sandbox Code Playgroud)

当我遇到这个问题时,我不得不删除并重新创建我的集合以使其工作 - 换句话说,我曾经将user_id作为String,但是当我在重建数据库时切换它时它只会"占用".幸运的是我正在处理测试数据,因此很容易.