##// END OF EJS Templates
Fixes custom field filters behaviour (#1078)....
Jean-Philippe Lang -
r1347:64474802f9dd
parent child
Show More
@@ -301,7 +301,7 class Query < ActiveRecord::Base
301 # custom field
301 # custom field
302 db_table = CustomValue.table_name
302 db_table = CustomValue.table_name
303 db_field = 'value'
303 db_field = 'value'
304 sql << "#{Issue.table_name}.id IN (SELECT #{db_table}.customized_id FROM #{db_table} where #{db_table}.customized_type='Issue' AND #{db_table}.customized_id=#{Issue.table_name}.id AND #{db_table}.custom_field_id=#{$1} AND "
304 sql << "#{Issue.table_name}.id IN (SELECT #{Issue.table_name}.id FROM #{Issue.table_name} LEFT OUTER JOIN #{db_table} ON #{db_table}.customized_type='Issue' AND #{db_table}.customized_id=#{Issue.table_name}.id AND #{db_table}.custom_field_id=#{$1} WHERE "
305 else
305 else
306 # regular field
306 # regular field
307 db_table = Issue.table_name
307 db_table = Issue.table_name
@@ -320,9 +320,9 class Query < ActiveRecord::Base
320 when "!"
320 when "!"
321 sql = sql + "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
321 sql = sql + "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + v.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))"
322 when "!*"
322 when "!*"
323 sql = sql + "#{db_table}.#{db_field} IS NULL"
323 sql = sql + "#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} = ''"
324 when "*"
324 when "*"
325 sql = sql + "#{db_table}.#{db_field} IS NOT NULL"
325 sql = sql + "#{db_table}.#{db_field} IS NOT NULL AND #{db_table}.#{db_field} <> ''"
326 when ">="
326 when ">="
327 sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}"
327 sql = sql + "#{db_table}.#{db_field} >= #{v.first.to_i}"
328 when "<="
328 when "<="
@@ -23,7 +23,7 class QueryTest < Test::Unit::TestCase
23 def test_query_with_multiple_custom_fields
23 def test_query_with_multiple_custom_fields
24 query = Query.find(1)
24 query = Query.find(1)
25 assert query.valid?
25 assert query.valid?
26 assert query.statement.include?("custom_values.value IN ('MySQL')")
26 assert query.statement.include?("#{CustomValue.table_name}.value IN ('MySQL')")
27 issues = Issue.find :all,:include => [ :assigned_to, :status, :tracker, :project, :priority ], :conditions => query.statement
27 issues = Issue.find :all,:include => [ :assigned_to, :status, :tracker, :project, :priority ], :conditions => query.statement
28 assert_equal 1, issues.length
28 assert_equal 1, issues.length
29 assert_equal Issue.find(3), issues.first
29 assert_equal Issue.find(3), issues.first
General Comments 0
You need to be logged in to leave comments. Login now