Recursibidad y retardo en la BBDD

Hola Lista

Tengo el siguiente metodo:

def eliminarInutiles()
self.children.each do |hijo|
hijo.eliminarInutiles()
end

if self.children.blank? and 

self.products.find_by_deleted_at(nil).blank?
self.destroy
end
end

Que se supone que BORRA todos los Tags que no tengan productos Activos o
hijos con productos Activos.

El problema es el siguiente: cuando un Tag tiene hijos sin productos los
borra pero no borra el Tag.

que pasa ? no da tiempo a actualizar la BBDD

Gracias

Jorge G.
Desarrollador Web Freelance

Según escribía el Mail anterior se me ocurrio.

def eliminarInutiles()
self.children.each do |hijo|
hijo.eliminarInutiles()
end

tag= Tag.find self.id
if tag.children.blank? and 

tag.products.find_by_deleted_at(nil).blank?
tag.destroy
end
end

Así funciona, pero no me parece muy elegante. Hay alguna forma mejor de
hacerlo?

Nota: Uso acts_as_adjacency_list

Gracias a todos por la ayuda

Jorge G.
Desarrollador Web Freelance