我的两个模型之间有一个简单的has_many / belongs_to关联。 我的问题是,当我删除一个我不再需要的对象(来自父模型)时,子模型对象中的外键仍然存在。例如:
森林
has_many :trees, :inverse_of => :forest
树
belongs_to :forest
当我删除Forest
个对象时,所有关联的Tree
对象仍然包含forest_id
的值,这会导致前端出错。我可以使用某种类似before_destroy
的钩子吗?虽然我认为这可能是一个非常简单的解决方案。
由于
答案 0 :(得分:6)
我认为您需要:dependent
选项。
has_many :trees, :inverse_of => :forest, :dependent => :nullify
当销毁关联模型时,这会将外键设置为nil
。您也可以使用:dependent => :destroy
销毁模型。
The documentation here可能会有所帮助。
答案 1 :(得分:0)
您已添加:dependent选项以及
之类的关联has_many:trees,:dependent => :破坏
它将删除特定Forest对象的所有树。