0

在ActiveRecord模型中安装圆形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。反之亦然。

回答

0

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

+1

这是在Rails/ActiveRecord中的标准做法吗? –