Delete Orphaned Parent
Tenho um relacionamento assim:
Parent
has_many :children
Child
belongs_to :parent
O que eu quero fazer é excluir os pais, se não houver mais filhos. Então, para fazer isso eu tenho:
Child
before_destroy :destroy_orphaned_parent
def destroy_orphaned_parent
parent.children.each do |c|
return if c != self
end
parent.destroy
end
Isso funciona bem, porém euAlém diss deseja colocar em cascata a exclusão do pai no filho. Por exemplo. Eu normalmente faria:
Parent
has_many :children, :dependent => :destroy
Isso causa uma falha no servidor WebRick quando eu o testo. Suponho que isso se deva a um loop infinito do último filho, excluindo o pai, excluindo o filho etc.
Estou começando a pensar que existe uma maneira melhor de fazer isso? Alguém tem alguma ideia? Existe uma maneira de impedir essa recursão?