这是我的问题的后续行动: 在 ActiveModel 中更新子关联
我正在寻找标准/正确的方法来更新与父母相关的许多子记录。
假设我有一个父级(使用 has_many 连接到一个子表,并且:autosave=>true)。
obj = Parent.first
现在我迭代它的孩子,并更新它们。
obj.each.do |child|
child.remark = "something"
end
我希望在调用 obj.save 时将孩子与父母一起保存,但正如在上一个问题中向我解释的那样,唯一的方法是直接更新它,如下所示:
obj.children.first.remark = "something"
(或保存每个孩子,但这需要一个明确的交易,我认为不应该在这里使用)。
实现这一点的正确方法是什么?
谢谢!
*编辑:按照此处给出的建议,我已将其添加到模型中:
class Parent < ActiveRecord::Base
has_many :children, :inverse_of => :parent,:autosave=>true
accepts_nested_attributes_for :children
但还是,
x = Parent.first
c = x.children.first
c.remark = "something"
x.save # => doesn't update c