【问题标题】:Circular dependent: :destroy in ActiveRecord possible?循环依赖: :destroy 在 ActiveRecord 中可能吗?
【发布时间】:2013-08-21 23:02:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-4 rails-activerecord dependent-destroy


    【解决方案1】:

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

    【讨论】:

    • 这是 Rails/ActiveRecord 中的标准做法吗?
    猜你喜欢
    • 2016-10-03
    • 1970-01-01
    • 2015-06-24
    • 2014-01-28
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多