我在一个类中有一个 accept_nested_attributes_for 的 :reject_if 案例,但如果某个值为 0,我也希望能够销毁已经创建的对象。
似乎没有 :destroy_if 选项。有没有标准的方法来控制这样的情况?
我在一个类中有一个 accept_nested_attributes_for 的 :reject_if 案例,但如果某个值为 0,我也希望能够销毁已经创建的对象。
似乎没有 :destroy_if 选项。有没有标准的方法来控制这样的情况?
我找到了使用 before_save 的解决方案。这似乎工作得很好。
before_save :mark_entries_for_removal
def mark_entries_for_removal
entries.each do |entry|
entry.mark_for_destruction if entry.hours_spent <= 0
end
end
A nested model is destroyed when its attribute _destroy
is set (1 or true)
A solution is to overload your_nested_model_attributes=
to set the _destroy
attribute to 1