使用dependent: :destroy 在rails 上不起作用

Posted

技术标签:

【中文标题】使用dependent: :destroy 在rails 上不起作用【英文标题】:Using dependent: :destroy isn't working on rails 【发布时间】:2016-10-23 07:10:08 【问题描述】:

我有一个带有这些关联的表 Bmp

class Bmp < ActiveRecord::Base
  #associations
     has_many :subareas, dependent: :destroy
     belongs_to :scenario

和另一个表格子区域

class Subarea < ActiveRecord::Base
  #associations
      belongs_to :scenarios
      belongs_to :soil
      belongs_to :bmp

但是,当我尝试删除 bmp 时,它也应该删除我的分区,但它没有这样做。

  def destroy
    @bmp = Bmp.find(params[:id])
    @bmp.destroy

我没有看到我搞砸了,任何想法都非常感谢!

【问题讨论】:

您确认子区域在bmp_id 字段中包含值吗? 当您尝试破坏某些东西时,您能否发布服务器日志的转储 @Kumar 抱歉,我真的是 Rails 新手,你是什么意思? 【参考方案1】:

您的子区域仍然属于场景!如果您删除它们,它们之间的关联将被破坏。

删除 subarea.rb 中的“belongs_to :scenarios”。

在 scenario.rb 中添加“has_many :subareas ,trough: :bmp”。

这将保持子区域和场景之间的关系,但会使 bmp 在它们之间“在路上”,并允许“链销毁”。

【讨论】:

以上是关于使用dependent: :destroy 在rails 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

rails :dependent=>:destroy 被忽略

rails dependent

依赖: :destroy 不工作

如何修改依赖::destroy 查询 has_many 关系

rails清除模型的所有关系依赖关系?

嵌套属性在使用cocoon保存之前更改值