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?

questionAnswers(5)

yourAnswerToTheQuestion