Ho la seguente associazione:Come sapere quando il modello viene disattivato automaticamente da a: dependent =>: destroy in rail?
class Parent < ActiveRecord::Base
has_many :children, :dependent => :destroy
before_destroy :do_some_stuff
end
class Child < ActiveRecord::Base
belongs_to :parent
before_destroy :do_other_stuff
end
Vorrei sapere in do_other_stuff se la distruzione è stato sparato da dipendente => distruggere o non perché parte di essa sarebbe/sarà fatto in do_some_stuff
Ho provato parent.destroyed?
, parent.marked_for_destruction?
, parent.frozen?
ma niente funziona:/
qualche idea?
Non credo 'parent' esisterà quando gli oggetti dipendenti sono stati distrutti . È già andato. – tadman
I bambini vengono distrutti prima che il genitore venga distrutto. Non ci sarà nessuna bandiera disponibile sul genitore, afaik. –
@tadman non è corretto. 'parent' esiste quando l'oggetto dipendente viene distrutto, perché i bambini vengono distrutti prima che il' parent' venga distrutto. L'ordine sembra essere il seguente: callback 'before_destroy' viene attivato su' children' prima che vengano distrutti, 'children' e poi distrutti,' before_destroy' viene richiamato su 'parent',' parent' e infine viene distrutto. Puoi spostare la logica di ciò che stai cercando di fare nel metodo 'do_some_stuff'? – Batkins