我正在使用Rails 5.1.6
我有一个使用Taxon
的模型acts_as_nested_set
。我有4个级别的分类单元,最后一个级别sub_category
具有保存所有父母姓名的属性,我想在每次更改其任何父母姓名时都使用{{1 }}回调会在sub_category
中运行,因为每个子进程都在运行保存回调后会导致无限循环。知道如何克服这个问题吗?
after_save
答案 0 :(得分:0)
我有一个适合您的解决方案,但我认为这不是一个优雅的解决方案,但是您可以在这里进行调整:
在您的模型中:
class Taxon < ActiveRecord::Base
cattr_accessor :skip_callbacks
after_save :update_tree_name, :unless => :skip_callbacks
end
def update_tree_name
if shop_sub_category?
update(display_tree_name: beautiful_name)
else
related_sub_categories = tree_list.select{ |taxon| taxon.kind == "sub_category" }
Taxon.skip_callbacks = true # disable the after_save callback so that you do not end up in infinite loop (stackoverflow)
related_sub_categories.each do |t|
t.update(display_tree_name: t.beautiful_name)
end
Taxon.skip_callbacks = false # enable callbacks again when you finish
end
end