git-svn-id: https://svn.redmine.org/redmine/trunk@21684 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/5.1.0
@@ -1176,7 +1176,7 @@ class Query < ActiveRecord::Base | |||
end | |||
filter = available_filters[field] | |||
target_class = filter[:through].format.target_class | |||
target_class = filter[:through].format.target_class.base_class | |||
"#{queried_table_name}.id #{not_in} IN (" + | |||
"SELECT customized_id FROM #{CustomValue.table_name}" + | |||
@@ -1184,7 +1184,7 @@ class Query < ActiveRecord::Base | |||
" AND CAST(CASE value WHEN '' THEN '0' ELSE value END AS decimal(30,0)) IN (" + | |||
" SELECT customized_id FROM #{CustomValue.table_name}" + | |||
" WHERE customized_type='#{target_class}' AND custom_field_id=#{chained_custom_field_id}" + | |||
" AND #{sql_for_field(field, operator, value, CustomValue.table_name, 'value')}))" | |||
" AND #{sql_for_field(field, operator, value, CustomValue.table_name, 'value', true)}))" | |||
end | |||
@@ -948,6 +948,18 @@ class QueryTest < ActiveSupport::TestCase | |||
assert_equal issue1, result.first | |||
end | |||
def test_filter_on_chained_user_custom_field_of_type_float | |||
user_cf = UserCustomField.find(5) | |||
user_cf.update! is_filter: true | |||
issue_cf = IssueCustomField.create!(:field_format => 'user', :is_for_all => true, :is_filter => true, :name => 'User custom field', :tracker_ids => [1]) | |||
issue1 = Issue.create!(:project_id => 1, :tracker_id => 1, :custom_field_values => {issue_cf.id.to_s => '2'}, :subject => 'Test', :author_id => 1) | |||
query = IssueQuery.new(:name => '_', :project => Project.find(1)) | |||
query.filters = {"cf_#{issue_cf.id}.cf_#{user_cf.id}" => {:operator => '=', :values => ["30.1"]}} | |||
assert query.issues | |||
end | |||
def test_filter_on_me_by_anonymous_user | |||
User.current = nil | |||
query = |