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

Myt*_*ish 2 ruby-on-rails

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

森林

has_many :trees, :inverse_of => :forest

belongs_to :forest

当我删除一个Forest对象时,所有关联的Tree对象仍然包含一个值forest_id,这会导致前端出错.有什么样的钩子before_destroy可以使用吗?虽然我在想,这可能是一个非常简单的解决方案.

谢谢

cjh*_*eal 6

我想你想要的:dependent选择.

has_many :trees, :inverse_of => :forest, :dependent => :nullify
Run Code Online (Sandbox Code Playgroud)

这将把外键设置nil为销毁关联模型的时间.您还可以使用它:dependent => :destroy来销毁模型.

这里的文档可能有所帮助.