Zniszcz na pustym atrybucie zagnieżdżonym
Chciałbym zniszczyć model zagnieżdżony, jeśli jego atrybuty są wygaszone w formularzu dla modelu macierzystego - wydaje się jednak, żeActiveRecord::Callbacks
nie są wywoływane, jeśli model jest pusty.
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
i
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
Mam formularz dla Artysty, który używafields_for
aby wyświetlić pola związane z datami tras związanych z trasą artysty, które działają przy edycji i dodawaniu nowych dat tras, ale jeśli po prostu wykasuję datę trasy (aby ją usunąć),destroy_if_blank
nigdy nie jest nazywany. Prawdopodobnie kontroler Artysty@artist.update_attributes(params[:artist])
line nie uważa, że pusty element jest wart aktualizacji.
Czy czegoś mi brakuje? Czy istnieje sposób na to?