Destrua no atributo aninhado em branco
Eu gostaria de destruir um modelo aninhado se seus atributos estão em branco no formulário para o modelo pai - no entanto, parece que oActiveRecord::Callbacks
não são chamados se o modelo estiver em branco.
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
e
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
Eu tenho um formulário para o artista que usafields_for
para mostrar os campos para as datas da turnê associada do artista, que funciona para editar e adicionar novas datas da turnê, mas se eu simplesmente anular a data da turnê (para excluí-la),destroy_if_blank
nunca é chamado. Presumivelmente, o controlador do Artista@artist.update_attributes(params[:artist])
linha não considera uma entidade em branco que vale a pena atualizar.
Estou esquecendo de algo? Existe uma maneira de contornar isso?