Перезвони
я такие отношения:
Parent
has_many :children
Child
belongs_to :parent
Что я хочу сделать, это удалить родителя, если больше не осталось детей. Так что для этого у меня есть:
Child
before_destroy :destroy_orphaned_parent
def destroy_orphaned_parent
parent.children.each do |c|
return if c != self
end
parent.destroy
end
Это прекрасно работает, однако ятакже хочу каскадно удалить родителя для ребенка. Например. Я бы обычно делал:
Parent
has_many :children, :dependent => :destroy
Это приводит к сбою сервера WebRick при тестировании. Я предполагаю, что это происходит из-за бесконечного цикла последнего потомка, удаляющего родителя, удаляющего потомка и т. Д.
Я начинаю думать, что есть лучший способ сделать это? У кого-нибудь есть идеи? Есть ли способ предотвратить эту рекурсию?