Mam następujący związek:Jak sprawdzić, czy model jest destijowany automatycznie przez: dependent =>: destroy in rails?
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
chciałbym wiedzieć do_other_stuff jeśli zniszczenie został zwolniony przez dependent => zniszczyć lub nie, ponieważ część z nich będzie/będą wykonywane w do_some_stuff
Próbowałem: parent.destroyed?
, , parent.frozen?
, ale nic nie działa:/
jakieś pomysły?
Nie sądzę 'parent' będzie istnieć, gdy zależne obiekty są niszczone . To już minęło. – tadman
Dzieci są niszczone, zanim rodzic zostanie zniszczony. Nie będzie żadnej flagi na rodzicu, Afaiku. –
@adadman jest niepoprawny. 'rodzic' istnieje, gdy obiekt zależny jest niszczony, ponieważ dzieci zostają zniszczone przed zniszczeniem' rodzica'. Wydaje się, że kolejność jest następująca: callback 'before_destroy' jest uruchamiany na' children' zanim zostanie zniszczony, 'children' następnie zostanie zniszczony, callback' before_destroy' zostanie uruchomiony na 'parent',' parent' następnie na końcu zostanie zniszczony. Czy możesz przenieść logikę tego, co próbujesz zrobić, do metody 'do_some_stuff'? – Batkins