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