]> source.dussan.org Git - redmine.git/commitdiff
Improve index usability for Project#project_condition (#38198).
authorGo MAEDA <maeda@farend.jp>
Sat, 21 Jan 2023 08:50:12 +0000 (08:50 +0000)
committerGo MAEDA <maeda@farend.jp>
Sat, 21 Jan 2023 08:50:12 +0000 (08:50 +0000)
Patch by Holger Just.

git-svn-id: https://svn.redmine.org/redmine/trunk@22069 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb

index 80bea61d97b73084052b61a5dd48798f9fea4079..43a55428e4a9c2845b2a4a033c3fb775cd41b432 100644 (file)
@@ -329,15 +329,17 @@ class Project < ActiveRecord::Base
   # Returns a :conditions SQL string that can be used to find the issues associated with this project.
   #
   # Examples:
-  #   project.project_condition(true)  => "(projects.id = 1 OR (projects.lft > 1 AND projects.rgt < 10))"
+  #   project.project_condition(true)  => "(projects.lft >= 1 AND projects.rgt <= 10)"
   #   project.project_condition(false) => "projects.id = 1"
   def project_condition(with_subprojects)
-    cond = "#{Project.table_name}.id = #{id}"
     if with_subprojects
-      cond = "(#{cond} OR (#{Project.table_name}.lft > #{lft} AND " \
-               "#{Project.table_name}.rgt < #{rgt}))"
+      "(" \
+        "#{Project.table_name}.lft >= #{lft} AND " \
+        "#{Project.table_name}.rgt <= #{rgt}" \
+      ")"
+    else
+      "#{Project.table_name}.id = #{id}"
     end
-    cond
   end
 
   def self.find(*args)