]> source.dussan.org Git - redmine.git/commitdiff
Merged r21686 and r21687 to 5.0-stable (#36940).
authorMarius Balteanu <marius.balteanu@zitec.com>
Tue, 28 Jun 2022 06:49:22 +0000 (06:49 +0000)
committerMarius Balteanu <marius.balteanu@zitec.com>
Tue, 28 Jun 2022 06:49:22 +0000 (06:49 +0000)
git-svn-id: https://svn.redmine.org/redmine/branches/5.0-stable@21690 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/query.rb
test/unit/query_test.rb

index 4ef74a25ec65bf1db0ef6bee15e06ea4d452b576..1a614f1753cd4d549863b7482c558107d1be11ac 100644 (file)
@@ -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}" +
index da8e43b904b652a2739f7f4bbb8ab9f86cb64e9a..bb097f88a6e80a53cff1cc9eafb06da780a680c7 100644 (file)
@@ -948,6 +948,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