From 13f5301c097fab6b6865c739cfb4843cf7886c8a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 23 Nov 2012 17:39:38 +0000 Subject: [PATCH] Fixed that Project.rebuild! sorts projects by id instead of name (#12431). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10866 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../lib/awesome_nested_set/awesome_nested_set.rb | 2 +- test/unit/project_nested_set_test.rb | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/plugins/awesome_nested_set/lib/awesome_nested_set/awesome_nested_set.rb b/lib/plugins/awesome_nested_set/lib/awesome_nested_set/awesome_nested_set.rb index 073e13e29..95d9494d4 100644 --- a/lib/plugins/awesome_nested_set/lib/awesome_nested_set/awesome_nested_set.rb +++ b/lib/plugins/awesome_nested_set/lib/awesome_nested_set/awesome_nested_set.rb @@ -186,7 +186,7 @@ module CollectiveIdea #:nodoc: end # Find root node(s) - root_nodes = where("#{quoted_parent_column_name} IS NULL").order("#{quoted_left_column_name}, #{quoted_right_column_name}, id").each do |root_node| + root_nodes = where("#{quoted_parent_column_name} IS NULL").order(acts_as_nested_set_options[:order]).each do |root_node| # setup index for this scope indices[scope.call(root_node)] ||= 0 set_left_and_rights.call(root_node) diff --git a/test/unit/project_nested_set_test.rb b/test/unit/project_nested_set_test.rb index 6f6aa1707..3bd37609b 100644 --- a/test/unit/project_nested_set_test.rb +++ b/test/unit/project_nested_set_test.rb @@ -47,6 +47,13 @@ class ProjectNestedSetTest < ActiveSupport::TestCase assert_valid_nested_set end + def test_rebuild_should_build_valid_tree + Project.update_all "lft = NULL, rgt = NULL" + + Project.rebuild! + assert_valid_nested_set + end + def test_moving_a_child_to_a_different_parent_should_keep_valid_tree assert_no_difference 'Project.count' do Project.find_by_name('B1').set_parent!(Project.find_by_name('A2'))