Isa*_*aac 14 ruby-on-rails callback associations destroy
我有一个Ahas_many 的对象B(简单关联):
has_many :book_accounts, {
dependent: :destroy
}
Run Code Online (Sandbox Code Playgroud)
我正在进行before_destroy回调.我想检查并确保在销毁之前没有C(属于哪个B)和D's(属于哪个C)A.我检查了日志,并且B在回调之前所有的都被删除导致回调崩溃.
这是Rails应该如何工作?除了删除dependent: destroy和手动销毁回调中B的s之外,我能做些after_destroy什么吗?或者这是首选解决方案?
小智 22
这是一个非常愚蠢的铁轨问题和令人沮丧的问题.在Rails中定义关系时,该:dependent选项实际上会创建一个回调.如果before_destroy在关系之后定义回调,则在关系被销毁之前不会调用回调.
解决方案是before_destroy在声明关联之前订购回调.
你的代码将是这样的
Class A < ActiveRecord::Base
before_destroy :check
has_many :book_accounts, dependent: :destroy
End
Run Code Online (Sandbox Code Playgroud)
Jon*_*nas 10
必须添加prepend: true回调声明:
before_destroy :do_something_before_children_removed, prepend: true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1842 次 |
| 最近记录: |