私のアプリケーションではmark_for_destruction
、条件に基づいてネストされたレコードを削除するために使用しています。
私はTicket
モデルとモデルを持っていPick
ます:
class Ticket < ActiveRecord::Base
has_many :picks
accepts_nested_attributes_for :picks
attr_accessible :picks_attributes
before_save :mark_destroy_zero_weighted_picks
def mark_destroy_zero_weighted_picks
picks.each do |pick|
pick.mark_for_destruction if pick.weight.to_i == 0
end
end
end
class Pick < ActiveRecord::Base
belongs_to :ticket
attr_accessible :ticket_id
attr_accessible :weight
end
関連付けられた 4 つのピックを持つチケットがあり、重みが1,0,2,1
; 次に、最初のピックのみが保存され、新しいチケット レコードを作成するときに、0
加重ピック ( true の場合) の後の他のすべてのピックが削除されます。marked_for_destruction
レコードを編集すると問題なく動作しますが、新しいレコードの作成中は機能しません。