删除模型对象后如何删除关联

时间:2012-08-27 10:23:41

标签: ruby-on-rails

我的两个模型之间有一个简单的has_many / belongs_to关联。 我的问题是,当我删除一个我不再需要的对象(来自父模型)时,子模型对象中的外键仍然存在。例如:

森林

has_many :trees, :inverse_of => :forest

belongs_to :forest

当我删除Forest个对象时,所有关联的Tree对象仍然包含forest_id的值,这会导致前端出错。我可以使用某种类似before_destroy的钩子吗?虽然我认为这可能是一个非常简单的解决方案。

由于

2 个答案:

答案 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对象的所有树。