ネストされたモデルを破棄したい場合、その属性が親モデルのフォームで空白になっている場合 - モデルが空白の場合は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.update_attributes(params[:artist])
行は、更新する価値のある空白のエンティティとはみなされません。
何か不足していますか?これを回避する方法はありますか?
なぜ「tour_date.when.blank」ですか?二度?ありがとう –
@maxkaplan:それは 'when'と' where'だったはずです。私は答えでそれを修正しました。ありがとう! – Sunny