Ruby on rails 3 未保存嵌入的引用

Ruby on rails 3 未保存嵌入的引用,ruby-on-rails-3,reference,mongoid,Ruby On Rails 3,Reference,Mongoid,在mongoid和rails 3下,我有一个用户集合和一个项目集合,其中嵌入了许多关系,模型如下: 类用户 包含Mongoid::文档 字段:name,:type=>String 在:关系中引用,在=>:user中引用 结束 班级项目 包含Mongoid::文档 字段:title,:type=>String 嵌入许多:关系 结束 阶级关系 包含Mongoid::文档 字段:type,:type=>String 参考文献一:用户 嵌入在:主题中,:相反的=>:relationships 结束 我的

在mongoid和rails 3下,我有一个用户集合和一个项目集合,其中嵌入了许多关系,模型如下:

类用户
包含Mongoid::文档
字段:name,:type=>String
在:关系中引用,在=>:user中引用 结束

班级项目
包含Mongoid::文档
字段:title,:type=>String
嵌入许多:关系
结束

阶级关系
包含Mongoid::文档
字段:type,:type=>String
参考文献一:用户
嵌入在:主题中,:相反的=>:relationships
结束

我的问题是,关系的引用用户从未保存到关系中。例如,以下命令仅保存:键入

project1=Project.new(:title=>“project1”,:relationships=>[{:type=>“master”,:user=>“4D779568BCD7AC089900002”}])

我的目标是创建一个类似以下内容的项目文档:

{“_id”:ObjectId(“4d77a8b2bcd7ac08da00000f”),“title”:“project1”,“relationships”:[
{
“类型”:“主控”,
“用户”:ObjectId(“4D775EFFBCD7AC05A800002”),
“_id”:ObjectId(“4d77a8b2bcd7ac08da000010”)
}
]}

:用户从未出现过,我是否遗漏了什么?非常感谢你的帮助


Ted

因此,您可能需要改变以下几点:

1) 避免使用字段名“type”,因为这是单表继承使用的rails神奇列名。可能会将它们更改为用户类型和关系类型

2) 在Mongoid 2.0及更高版本中,您可以使用活动模型语法,如has_many和own_to,而不是引用

3) 对于您的创建,请尝试分配用户对象,而不是使用用户ID分配用户

project1 = Project.new( :title => "project1", :relationships => [ {:type => "master", :user => User.first} ] )
或者您可以分配一个用户id,如下所示:

project1 = Project.new( :title => "project1", :relationships => [ {:type => "master", :user_id => "the_use_id_you_want_to_associate"} ] )

仅供参考,您不必在“referenced\u in:relationship,:inverse\u of=>:user”中指定的逆。只需“关系中引用的内容”就可以了。

您使用哪个版本的mongoid?我在mongoid 2.0.0中遇到了这个问题,可能您现在已经解决了,但请尝试从用户中删除关系中引用的
并将关系中的
引用的一个:用户
更改为
引用的\u-in:user