首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoMapper has_many关联

MongoMapper has_many关联
EN

Stack Overflow用户
提问于 2010-01-08 06:12:28
回答 3查看 3.2K关注 0票数 3

我对mongomapper关联有问题。我有一个类名为User,另一个命名为Model。用户有许多型号,但是...

代码语言:javascript
复制
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

类代码(简化):

代码语言:javascript
复制
class User
  include MongoMapper::Document

  # some keys definition

  many :models
end

class Model
  include MongoMapper::Document

  # some keys definitions

  belongs_to :user
end

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-09 04:56:04

MM似乎不再对FK列使用字符串格式,因此

代码语言:javascript
复制
Model.find_by_user_id(user.id.to_s)

应该是

代码语言:javascript
复制
Model.find_by_user_id(user.id)

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

代码语言:javascript
复制
key :user_id, Mongo::ObjectID

当我遇到这个问题时,我不得不删除并重新创建我的集合以使其工作-换句话说,我曾经将user_id作为字符串,但只有当我重新构建数据库时切换它时,它才会“接受”。幸运的是,我使用的是测试数据,所以这很容易。

票数 5
EN

Stack Overflow用户

发布于 2010-01-08 06:24:13

你得到了什么类型的错误或异常?您发布的代码看起来很好。

票数 0
EN

Stack Overflow用户

发布于 2011-09-27 22:18:57

啊,这在mm文档中没有很好的记录。您需要在此处执行此操作:

代码语言:javascript
复制
class User
  include MongoMapper::Document

  # some keys definition

  many :models, :in => :model_ids
end

class Model
  include MongoMapper::Document

  # some keys definitions
  # no belongs_to necessary here
end

然后,您可以通过以下方式向用户添加模型:

代码语言:javascript
复制
# use an existing object
u = User.create ...
m = Model.create ...

# and add the model to the user
u.models << m

# don't forget to save
u.save

# you can then check if it worked like so:
# u.model_ids  => [ BSON::ID 'your user id']

希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2024069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档