これで何が問題なのbefore_save-callback
ですか?
class Order < ActiveRecord::Base
has_many :line_items, :dependent => :destroy, :inverse_of => :order
accepts_nested_attributes_for :line_items
attr_accessible :line_items_attributes
before_save :mark_line_items_for_removal
def mark_line_items_for_removal
line_items.each do |line_item|
line_item.mark_for_destruction if line_item.quantity.to_f <= 0
end
end
end
そのうちの 1 つにline_items
破壊のマークが付けられている場合、line_item
保存されるものはありません。ただし、親 Order オブジェクトは保存されます。true を返しても違いはありません...
mark_for_destruction について: http://apidock.com/rails/v3.1.0/ActiveRecord/AutosaveAssociation/mark_for_destruction と、なぜ「:allow_destroy => true」ではなく? ここを参照してください: http://weblogs.manas.com.ar/spalladino/2010/03/15/deleting-children-with-accepts_nested_attributes_for-in-rails/