Я использую Rails 5.1.6
У меня есть модель с именем Taxon
, использующая acts_as_nested_set
. У меня есть 4 уровня таксонов, последний уровень sub_category
имеет атрибут, содержащий имена всех родителей, я хочу обновлять атрибут sub_category
каждый раз, когда меняется имя любого из его родителей, при использовании обратного вызова after_save
он сталкивается с SystemStackError
, поскольку каждый обратный вызов после сохранения запускается для каждого дочернего элемента, ведущего к бесконечному циклу. Есть идеи, как преодолеть эту проблему?
class Taxon
acts_as_nested_set dependent: :destroy
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" }
related_sub_categories.each do |t|
t.update(display_tree_name: t.beautiful_name)
end
end
end
def beautiful_name
"#{parent.parent.parent.name} -> #{parent.parent.name} -> #{parent.name}-> #{name}"
end