我有一个叫做容器的类。这些容器就像一组文件夹,可以嵌套在树结构中,任意数量的子项可以任意深度。我希望能够在删除父文件夹时递归删除这些文件。
我大部分时间都在寻找是否有内置到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
答案 0 :(得分:1)
假设你想要从父母身上摧毁(而不是从孩子身上摧毁),那么你应该将dependent: :destroy
添加到你的has_many
来电(而不是孤儿所在的belongs_to
风险存在)。