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?