0

dependent: :destroy在 ActiveRecord 模型中使用循环选项是否安全?

class Student < ActiveRecord::Base
  has_one :user, dependent: :destroy
end
class User < ActiveRecord::Base
  belongs_to :student, dependent: :destroy
end

如果我删除一个user,它应该删除关联的student. 反之亦然。

4

1 回答 1

0

是的。AR 只会在单个事务中为每个实体发出删除查询。因此,假设用户有 2 个学生(a 和 b)。如果你删除学生a,AR会删除学生a,导致用户被删除,导致学生b被删除,最终导致用户重复删除。重复删除(除了对性能的小影响)不会导致任何类型的错误。相反,删除用户也可以正常工作。

于 2013-08-21T23:47:21.067 回答