在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
。反之亦然。
是。AR只会为单个事务中的每个实体发出删除查询。假设一个用户有两个学生(a和b)。如果您删除了学生a,AR将删除学生a,导致删除用户,导致删除学生b,导致最终重复删除用户。重复删除(除了一个小的性能打击)不会导致任何类型的错误。反之,删除用户也会很好。