OSDN Git Service

Limits nested set overhead when destroying an issue without children.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 1 Apr 2011 18:58:29 +0000 (18:58 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 1 Apr 2011 18:58:29 +0000 (18:58 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5286 e93f8b46-1217-0410-a6f0-8f06a7374b81

vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb

index b2ebd66..b1e5ae1 100644 (file)
@@ -444,11 +444,12 @@ module CollectiveIdea #:nodoc:
         # Prunes a branch off of the tree, shifting all of the elements on the right
         # back to the left so the counts still work.
         def prune_from_tree
-          return if right.nil? || left.nil? || !self.class.exists?(id)
+          return if right.nil? || left.nil? || leaf? || !self.class.exists?(id)
 
           delete_method = acts_as_nested_set_options[:dependent] == :destroy ?
             :destroy_all : :delete_all
 
+          # TODO: should destroy children (not descendants) when deleted_method is :destroy_all
           self.class.base_class.transaction do
             reload_nested_set
             nested_set_scope.send(delete_method,