親モデルのフォームで属性が空白になっている場合、ネストされたモデルを破棄したいと思いますがActiveRecord::Callbacks
、モデルが空白の場合は呼び出されないようです。
class Artist < ActiveRecord::Base
using_access_control
attr_accessible :bio, :name, :tour_dates_attributes
has_many :tour_dates, :dependent => :destroy
accepts_nested_attributes_for :tour_dates, :reject_if => lambda { |a| a[:when].blank? || a[:where].blank? }, :allow_destroy => true
validates :bio, :name :presence => true
def to_param
name
end
end
と
class TourDate < ActiveRecord::Base
validates :address, :when, :where, :artist_id, :presence => true
attr_accessible :address, :artist_id, :when, :where
belongs_to :artist
before_save :destroy_if_blank
private
def destroy_if_blank
logger.info "destroy_if_blank called"
end
end
fields_for
アーティストに関連付けられたツアー日付のフィールドを表示するために使用するアーティスト用のフォームがあります。これは、新しいツアー日付の編集と追加に使用できますが、単にツアー日付を空白にする (削除する) と、destroy_if_blank
決して呼び出されません。おそらく、Artist コントローラーの@artist.update_attributes(params[:artist])
行は、空のエンティティを更新する価値があるとは見なしていません。
何か不足していますか?これを回避する方法はありますか?