summaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-10-15 16:38:17 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-10-15 16:38:17 +0000
commit3172359f9704d7c97adc60883d9ca5ec076c7667 (patch)
tree346f03c71f621a560bf1ce273d8d09ca31e38c4b /app/models
parent758cc2f2e6eda211d6e38c467ce56532a2e23600 (diff)
downloadredmine-3172359f9704d7c97adc60883d9ca5ec076c7667.tar.gz
redmine-3172359f9704d7c97adc60883d9ca5ec076c7667.zip
Avoid N queries when displaying the issue list with custom fields.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12223 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models')
-rw-r--r--app/models/issue_query.rb11
-rw-r--r--app/models/query.rb4
2 files changed, 12 insertions, 3 deletions
diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb
index 56ef9f08e..66f520d64 100644
--- a/app/models/issue_query.rb
+++ b/app/models/issue_query.rb
@@ -323,7 +323,7 @@ class IssueQuery < Query
def issues(options={})
order_option = [group_by_sort_order, options[:order]].flatten.reject(&:blank?)
- issues = Issue.visible.
+ scope = Issue.visible.
joins(:status, :project).
where(statement).
includes(([:status, :project] + (options[:include] || [])).uniq).
@@ -331,8 +331,13 @@ class IssueQuery < Query
order(order_option).
joins(joins_for_order_statement(order_option.join(','))).
limit(options[:limit]).
- offset(options[:offset]).
- all
+ offset(options[:offset])
+
+ if has_custom_field_column?
+ scope = scope.preload(:custom_values)
+ end
+
+ issues = scope.all
if has_column?(:spent_hours)
Issue.load_visible_spent_hours(issues)
diff --git a/app/models/query.rb b/app/models/query.rb
index ca04f29b5..7582d73bc 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -449,6 +449,10 @@ class Query < ActiveRecord::Base
column_names && column_names.include?(column.is_a?(QueryColumn) ? column.name : column)
end
+ def has_custom_field_column?
+ columns.any? {|column| column.is_a? QueryCustomFieldColumn}
+ end
+
def has_default_columns?
column_names.nil? || column_names.empty?
end