在rails中有很多关系

pab*_*orc 1 activerecord ruby-on-rails

我在Rails应用程序中有这种关系

class Folder
  has_many :elements
end

class Element
  belongs_to :folder
end
Run Code Online (Sandbox Code Playgroud)

我的问题是这段代码不起作用

element = Element.first
a_folder.elements << element
element.save!
a_folder.save!
Run Code Online (Sandbox Code Playgroud)

,但这个工作:

element.folder = a_folder
element.save!
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么?

谢谢.

bjg*_*bjg 8

从Rails 文档

将对象添加到集合(has_many或has_and_belongs_to_many)会自动保存该对象,除非父对象(集合的所有者)尚未存储在数据库中.

所以,如果@folder已经保存,那么@folder.elements << @element应该工作.

您还可以添加如下元素:

@folder.elements.create(...)
Run Code Online (Sandbox Code Playgroud)