gpt4 book ai didi

ruby-on-rails - Ruby on Rails-关联在“before_destroy”之前被删除

转载 作者:行者123 更新时间:2023-12-03 21:14:35 26 4
gpt4 key购买 nike

我有一个具有A(简单关联)的对象B

has_many :book_accounts, {
dependent: :destroy
}


我正在做 before_destroy回调。我要检查并确保在销毁 C之前,没有 B(属于[cc])和 D(属于[cc])。我检查了日志,并在回调导致回调崩溃之前删除了所有 C

这是Rails应该如何工作的吗?除了删除 A并在 B回调中手动销毁 dependent: destroy之外,我还能做些什么吗?还是这是首选解决方案?

最佳答案

这也是一个非常愚蠢的铁轨问题和令人沮丧的问题。在Rails中定义关系时,:dependent选项实际上会创建一个回调。如果在关系后定义before_destroy回调,则在破坏关系之前不会调用您的回调。

解决方案是在关联声明之前对您的before_destroy回调进行排序。

您的代码将是这样的

Class A < ActiveRecord::Base
before_destroy :check

has_many :book_accounts, dependent: :destroy
End

关于ruby-on-rails - Ruby on Rails-关联在“before_destroy”之前被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com