我对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类代码(简化):
class User
include MongoMapper::Document
# some keys definition
many :models
end
class Model
include MongoMapper::Document
# some keys definitions
belongs_to :user
end我做错了什么?
发布于 2010-01-09 04:56:04
MM似乎不再对FK列使用字符串格式,因此
Model.find_by_user_id(user.id.to_s)应该是
Model.find_by_user_id(user.id)此外,Model.user_id列的数据类型应设置为
key :user_id, Mongo::ObjectID当我遇到这个问题时,我不得不删除并重新创建我的集合以使其工作-换句话说,我曾经将user_id作为字符串,但只有当我重新构建数据库时切换它时,它才会“接受”。幸运的是,我使用的是测试数据,所以这很容易。
发布于 2010-01-08 06:24:13
你得到了什么类型的错误或异常?您发布的代码看起来很好。
发布于 2011-09-27 22:18:57
啊,这在mm文档中没有很好的记录。您需要在此处执行此操作:
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然后,您可以通过以下方式向用户添加模型:
# 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']希望这能帮上忙。
https://stackoverflow.com/questions/2024069
复制相似问题