diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-10-15 16:38:17 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2013-10-15 16:38:17 +0000 |
commit | 3172359f9704d7c97adc60883d9ca5ec076c7667 (patch) | |
tree | 346f03c71f621a560bf1ce273d8d09ca31e38c4b /app/models | |
parent | 758cc2f2e6eda211d6e38c467ce56532a2e23600 (diff) | |
download | redmine-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.rb | 11 | ||||
-rw-r--r-- | app/models/query.rb | 4 |
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 |