Eliminar padre huérfano

Tengo una relación como esta:

Parent
  has_many :children

Child
  belongs_to :parent

Lo que quiero hacer es eliminar al padre si no quedan más hijos. Para hacer esto tengo:

Child
    before_destroy :destroy_orphaned_parent

    def destroy_orphaned_parent
      parent.children.each do |c|
        return if c != self
      end
      parent.destroy
    end

Esto funciona bien, sin embargo yoademá quiere poner en cascada la eliminación del padre al hijo. P.ej. Normalmente haría:

Parent
  has_many :children, :dependent => :destroy

Esto hace que el servidor WebRick se bloquee cuando lo pruebo. Supongo que esto se debe a un bucle infinito del último hijo que elimina al padre que elimina al hijo, etc.

¿Estoy empezando a pensar que hay una mejor manera de hacer esto? ¿Alguien tiene alguna idea? ¿Hay alguna manera de prevenir esta recurrencia?

Respuestas a la pregunta(5)

Su respuesta a la pregunta