如何使用依赖项:销毁而不会导致无限循环

问题描述 投票:0回答:1

我有两个模型。用belongs_to :model_two进行模型一,用has_one :model_one进行模型二。他们都有dependent: :destroy

[当我尝试self.model_one = nil时,它将进入无限循环。

SystemStackError:
       stack level too deep

如果将模型一中的关联更改为dependent: :delete,它可以正常工作,但是很可能通过在数据库中直接删除而跳过模型中的某些挂钩。

如何使用dependent: :destroy而不引起循环?

ruby-on-rails ruby-on-rails-4 associations
1个回答
0
投票

在Rails 4中是不可能的。基于这个原因,您不能在关联的两侧使用dependent: :destroy,因为它会导致无限循环。

Bi-directional dependent: :destroy support是在Rails 5中添加的,如果需要此功能,最好的选择是升级应用程序,因为它没有被反向移植。


0
投票

您不必在两个模型上都运行dependent: :destroy。在具有dependent: :destroy的模型上运行就足够了。

Ex:

has_many :model_one

上面的代码说,当删除特定用户时,还要删除该用户创建的所有文章。就这样。

您的代码正在做什么,当删除用户时,删除该用户删除的所有文章,然后再次跳转到删除该用户,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.