2

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

森林

has_many :trees, :inverse_of => :forest

belongs_to :forest

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

谢谢

4

2 回答 2

6

我认为你想要这个:dependent选项。

has_many :trees, :inverse_of => :forest, :dependent => :nullify

这会将外键设置为nil关联模型被销毁的时间。你也可以:dependent => :destroy用来破坏模型。

这里的文档可能会有所帮助。

于 2012-08-27T10:29:58.480 回答
0

您已添加 :dependent 选项与关联,例如

has_many :trees, :dependent => :destroy

它将删除特定 Forest 对象的所有树。

于 2012-08-27T10:40:25.887 回答