我们应该在 join table 模型上写 dependent: destroy 吗?

Should we write dependent: destroy on a join table model?

我有 3 个模型 A、B 和 C。B 是 A 和 C 之间的联接 table。关联是通过 has_many :through 建立的。

我想知道非加入 table 模型(在我的例子中是 A 和 C)是否应该 dependent: :destroy 加入 table 关联,或者它是否自动处理通过 rails ?

HABTM 协会的答案是否相同?

不,因为您可以在不实例化记录的情况下删除记录,这不会调用依赖销毁,并且您会留下孤立的记录。

例如delete_all

相反,如果您添加外键,数据库将处理删除操作,您是否实例化该对象并不重要。

例如,您可以在迁移中添加

def change
  add_foreign_key :as, :bs, on_delete: :cascade
end

或者在table创建迁移

t.belongs_to :a, foreign_key: { on_delete: :cascade }