]> source.dussan.org Git - redmine.git/commitdiff
Limit queries to given issues only.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 5 Jul 2015 12:53:32 +0000 (12:53 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 5 Jul 2015 12:53:32 +0000 (12:53 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@14408 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb

index 5c9f81efae46266b2f9a5047a75b721846ff2899..72df50cd6cd0c537ebb6b22628629aa3596607ad 100644 (file)
@@ -950,7 +950,7 @@ class Issue < ActiveRecord::Base
   # Preloads visible total spent time for a collection of issues
   def self.load_visible_spent_hours(issues, user=User.current)
     if issues.any?
-      hours_by_issue_id = TimeEntry.visible(user).group(:issue_id).sum(:hours)
+      hours_by_issue_id = TimeEntry.visible(user).where(:issue_id => issues.map(&:id)).group(:issue_id).sum(:hours)
       issues.each do |issue|
         issue.instance_variable_set "@spent_hours", (hours_by_issue_id[issue.id] || 0)
       end
@@ -959,8 +959,10 @@ class Issue < ActiveRecord::Base
 
   def self.load_visible_total_spent_hours(issues, user=User.current)
     if issues.any?
-      hours_by_issue_id = TimeEntry.visible(user).joins(:issue).joins("JOIN #{Issue.table_name} parent ON parent.root_id = #{Issue.table_name}.root_id" +
-        " AND parent.lft <= #{Issue.table_name}.lft AND parent.rgt >= #{Issue.table_name}.rgt").group("parent.id").sum(:hours)
+      hours_by_issue_id = TimeEntry.visible(user).joins(:issue).
+        joins("JOIN #{Issue.table_name} parent ON parent.root_id = #{Issue.table_name}.root_id" +
+          " AND parent.lft <= #{Issue.table_name}.lft AND parent.rgt >= #{Issue.table_name}.rgt").
+        where("parent.id IN (?)", issues.map(&:id)).group("parent.id").sum(:hours)
       issues.each do |issue|
         issue.instance_variable_set "@total_spent_hours", (hours_by_issue_id[issue.id] || 0)
       end