tengo la siguiente asociación:Cómo saber cuándo el modelo es destruido automáticamente por a: 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
me gustaría saber en do_other_stuff si la destrucción ha sido disparada por dependiente => destruir o no por parte del que sería/se hará en do_some_stuff
Intenté parent.destroyed?
, parent.marked_for_destruction?
, parent.frozen?
pero nada funciona:/
¿Alguna idea?
No creo que 'existirá parent' cuando los objetos dependientes están siendo destruidos . Ya se fue. – tadman
Los niños son destruidos antes de que el padre sea destruido. No habrá ninguna bandera disponible en el padre, afaik. –
@tadman es incorrecto. 'parent' existe cuando el objeto dependiente se destruye, porque los niños se destruyen antes de que el' parent' se destruya. El orden parece ser el siguiente: la devolución de llamada 'before_destroy' se activa en' children' antes de que se destruyan, 'children' se destruye,' response_destroy' se activa en 'parent',' parent' y finalmente se destruye. ¿Puedes mover la lógica de lo que estás tratando de hacer al método 'do_some_stuff'? – Batkins