Я хотел бы уничтожить вложенную модель, если ее атрибуты затушеваны в форме для родительской модели, однако, похоже, что 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
У меня есть форма для Artist, которая использует fields_for
для отображения полей для дат тура, связанных с художником, который работает для редактирования и добавления новых дат тура, но если я просто удалю дату тура (чтобы удалить ее) destroy_if_blank
никогда не вызывается. Предположительно, строка контроллера Artist @artist.update_attributes(params[:artist])
не рассматривает пустую ценность объекта, которая должна быть обновлена.
Я что-то упустил? Есть ли способ обойти это?