diff options
author | Marius Balteanu <marius.balteanu@zitec.com> | 2022-06-28 06:49:39 +0000 |
---|---|---|
committer | Marius Balteanu <marius.balteanu@zitec.com> | 2022-06-28 06:49:39 +0000 |
commit | 94f3510036690d049ac7425d19fa7c055044ae57 (patch) | |
tree | 7da33f9bee58274ebb7218f6f9767c20f7a39084 | |
parent | 44332d44c4e16c06eaf49ca6e19acf2c95a5c043 (diff) | |
download | redmine-94f3510036690d049ac7425d19fa7c055044ae57.tar.gz redmine-94f3510036690d049ac7425d19fa7c055044ae57.zip |
Merged r21686 and r21687 to 4.2-stable (#36940).
git-svn-id: https://svn.redmine.org/redmine/branches/4.2-stable@21691 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/query.rb | 2 | ||||
-rw-r--r-- | test/unit/query_test.rb | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index 4f9b9d7a8..03754ccfd 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -1168,7 +1168,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}" + diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index fec143e8b..39a6a6505 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -907,6 +907,24 @@ class QueryTest < ActiveSupport::TestCase assert_equal issue1, result.first end + def test_filter_on_chained_user_custom_field + user = User.find(2) + User.current = user + + user_cf = UserCustomField.find(4) + 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 => ['01 42']}} + result = query.issues + + assert_equal 1, result.size + 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 |