Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在本例中,Mongoid不保持父级和子级之间的关系?_Ruby_Mongodb_Mongoid - Fatal编程技术网

Ruby 在本例中,Mongoid不保持父级和子级之间的关系?

Ruby 在本例中,Mongoid不保持父级和子级之间的关系?,ruby,mongodb,mongoid,Ruby,Mongodb,Mongoid,我对这个问题摸不着头脑,弄不明白。父项和子项之间的关系未保存: class Project has_many :project_elements, :autosave => true field :name, type: String class ProjectElement belongs_to :project field :name, type: String 现在我做到了: project = Project.new(name: "P

我对这个问题摸不着头脑,弄不明白。父项和子项之间的关系未保存:

class Project
    has_many :project_elements, :autosave => true

    field :name, type: String

class ProjectElement
    belongs_to :project

    field :name, type: String
现在我做到了:

    project = Project.new(name: "Project1")
    project.save!

    project_element = ProjectElement.new(name: "Element")
    project_element.project = project
    project_element.save!

    # Test
    test_proj = Project.where(name: "Project1").first
    print test_proj.project_elements.where(name: "Element").first.name
这会为nil:NilClass抛出未定义的方法“name”错误
。通过mongo shell查看原始数据库,名为“element”的项目元素上不存在
项目id
。否则,数据都会被持久化,只是
Project
ProjectElement
之间的关系不存在

我正在使用Mongo2.4.10和最新的稳定mongoid gem


我遗漏了什么?

我不知道为什么这不起作用(一般来说……这是一个错误),但要解决这个问题,你可以使用以下替代方法之一

project = Project.new(name: "Project1")
project.save!

#solution 1
project_element = ProjectElement.create!(name: "Element", project: project)

#solution 2
project.project_elements.create!(name: 'Element')

您可以将它与以前的解决方案一起使用
.new
,但请记住在创建后保存对象,就像您在代码示例中所做的那样

我有同样的问题,但没有解决它(看起来像是一个bug)。或者,您可以使用
项目将èelement`添加到
产品