循环依赖::可能在ActiveRecord中销毁?

时间:2013-08-21 23:02:45

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

在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。反之亦然。

1 个答案:

答案 0 :(得分:0)

是。 AR将仅针对单个事务中的每个实体发出删除查询。所以,假设一个用户有2个学生(a和b)。如果您删除学生a,AR将删除学生a,导致删除用户,导致删除学生b,导致最终重复删除用户。重复删除(除了小的性能命中),不会导致任何类型的错误。反之,删除用户也可以正常工作。