我有一些Rails 4 ActiveRecord模型,其组织如下
假设一切都是has_many
关系,并设置为dependent: :destroy
User
有许多Items
Item
有许多Tags
Tag
有许多Foos
User
有许多Foos
当我删除特定的User
记录时,它会正确启动销毁链并删除关联的Item
,Tag
和Foo
记录。
但它也会尝试直接销毁Foo
。
这里会有竞争条件吗?是否会出错,具体取决于哪个模型“首先”。 User
或Tag
中的任何一个在尝试运行DELETE
语句时都会看到已删除的记录。
如果是这样,我该如何防止这种情况?
谢谢!
答案 0 :(得分:0)
你不应该在“User have many Foos”关系中使用“destroy”参数。
“Foo”必须使用“User.destroy_all”通过“Tag”销毁。