From b58cf253838bab9ef558b111b5094aae21890b45 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Wed, 21 Dec 2016 10:35:36 +0000 Subject: Adds .rebuild_single_tree! to rebuild a single tree (#24167). git-svn-id: http://svn.redmine.org/redmine/trunk@16111 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/nested_set/issue_nested_set.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lib/redmine') diff --git a/lib/redmine/nested_set/issue_nested_set.rb b/lib/redmine/nested_set/issue_nested_set.rb index afbe6b995..8753f25de 100644 --- a/lib/redmine/nested_set/issue_nested_set.rb +++ b/lib/redmine/nested_set/issue_nested_set.rb @@ -183,6 +183,16 @@ module Redmine end end + def rebuild_single_tree!(root_id) + root = Issue.where(:parent_id => nil).find(root_id) + transaction do + where(root_id: root_id).reorder(:id).lock.ids + where(root_id: root_id).update_all(:lft => nil, :rgt => nil) + where(root_id: root_id, parent_id: nil).update_all(["lft = ?, rgt = ?", 1, 2]) + rebuild_nodes(root_id) + end + end + private def rebuild_nodes(parent_id = nil) -- cgit v1.2.3