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
This commit is contained in:
parent
758cc2f2e6
commit
3172359f97
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue