From f3a8cd8d1e8dfafb987163d95208e0ff2ccbfbc2 Mon Sep 17 00:00:00 2001 From: hukl Date: Wed, 9 Sep 2009 15:18:09 +0200 Subject: fixed yet another bug when editing slugs or moving nodes --- app/models/node.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/node.rb b/app/models/node.rb index 4bc8ed4..a870a3a 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -13,6 +13,7 @@ class Node < ActiveRecord::Base # Callbacks after_create :initialize_empty_page before_save :check_for_changed_slug + after_save :update_unique_names_of_children # Validations # validates_length_of :slug, :within => 3..40 @@ -151,7 +152,15 @@ class Node < ActiveRecord::Base def check_for_changed_slug if parent and changed.include? "slug" self.unique_name = current_unique_name - self.descendants.each { |descendant| descendant.update_unique_name } + end + end + + # Watch out recursion ahead! update_unique_name itself triggers this + # after_save callback which invokes update_unique_name on its children. + # Hopefully until no childrens occur + def update_unique_names_of_children + self.descendants.each do |descendant| + descendant.update_unique_name end end end -- cgit v1.3