我一直在摸不着头脑,我无法弄明白。父母和孩子之间的关系不能保存:
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
这会引发错误undefined method 'name' for nil:NilClass
。使用mongo shell查看原始数据库时,project_id
在名为" Element"的项目元素上不存在。否则所有数据都会保留,只是Project
和ProjectElement
之间的关系不存在。
我使用的是mongo 2.4.10以及最新稳定的mongoid gem。
我错过了什么?
答案 0 :(得分:0)
嗯,我不知道为什么这不起作用(一般来说......这是一个错误AFAIK)但要解决这个问题,你可以使用下列其中一种方法
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
一起使用,但请记住在创建后保存对象,就像在代码示例中一样