У меня есть такие отношения:
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 при тестировании.Я предполагаю, что это происходит из-за бесконечного цикла последнего потомка, удаляющего родителя, удаляющего потомка и т. Д.
Я начинаю думать, что есть лучший способ сделать это?У кого-нибудь есть идеи?Есть ли способ предотвратить эту рекурсию?