diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index 6bb2bc217..af9f5bf7b 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -359,6 +359,15 @@ class IssueQuery < Query raise StatementInvalid.new(e.message) end + def versions_for_id(options={}) + Version.visible. + where(project_statement). + where(options[:conditions]). + includes(:project). + references(:project) + rescue ::ActiveRecord::StatementInvalid => e + raise StatementInvalid.new(e.message) + end def sql_for_updated_by_field(field, operator, value) neg = (operator == '!' ? 'NOT' : '') subquery = "SELECT 1 FROM #{Journal.table_name}" + @@ -426,16 +435,16 @@ class IssueQuery < Query def sql_for_fixed_version_status_field(field, operator, value) where = sql_for_field(field, operator, value, Version.table_name, "status") - version_ids = versions(:conditions => [where]).map(&:id) - + #version_ids = versions(:conditions => [where]).map(&:id) + version_ids = versions_for_id(:conditions => [where]).pluck(:id) nl = operator == "!" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" end def sql_for_fixed_version_due_date_field(field, operator, value) where = sql_for_field(field, operator, value, Version.table_name, "effective_date") - version_ids = versions(:conditions => [where]).map(&:id) - + #version_ids = versions(:conditions => [where]).map(&:id) + version_ids = versions_for_id(:conditions => [where]).pluck(:id) nl = operator == "!*" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" end