递归删除自引用类

时间:2015-05-22 20:54:56

标签: ruby-on-rails

我有一个叫做容器的类。这些容器就像一组文件夹,可以嵌套在树结构中,任意数量的子项可以任意深度。我希望能够在删除父文件夹时递归删除这些文件。

我大部分时间都在寻找是否有内置到rails的方法来执行此操作,如果没有,则是一种有效的方法。我已经尝试阅读dependent: destroy但是在rails文档中有一个警告,它可能会留下一个带有孤儿的数据库。

container.rb

class Container < ActiveRecord::Base

   belongs_to: parent,       #Reference to parent container
     class_name: "Container"
   has_many: children,       #Reference to children containers
     class_name: "Container", foreign_key: "parent_id"

end

1 个答案:

答案 0 :(得分:1)

假设你想要从父母身上摧毁(而不是从孩子身上摧毁),那么你应该将dependent: :destroy添加到你的has_many来电(而不是孤儿所在的belongs_to风险存在)。