Defect #36940
closedChained custom field filter doesn't work for User fields
0%
Description
A chained custom field filter doesn't work for fields with format User.
Steps to reproduce:
- Create a user custom field A (the format doesn't matter) and check Used as a filter
- Create an issue custom field B with format User and check Used as a filter
- On the My account page set the custom value A for your own account to an arbitrary value
- Create an issue and select <<me>> for the custom field B
- Filter the issue list by the filter B's A and use the value you set on the My account page
- The issue is found
- The issue is not found
The reason is that the SQL that filters the issues contains a WHERE customized_type='User'
. However, the correct clause would be WHERE customized_type='Principal'
.
Here is a patch to fix the issue:
--- a/app/models/query.rb +++ b/app/models/query.rb @@ -1166,7 +1166,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}" +
Best regards,
Thomas
Files
Updated by Go MAEDA over 2 years ago
- Target version set to Candidate for next minor release
Updated by Marius BĂLTEANU over 2 years ago
- File 0001-Fix-chained-custom-field-filter-doesn-t-work-for-Use.patch 0001-Fix-chained-custom-field-filter-doesn-t-work-for-Use.patch added
I'm not sure if we should that change for all classes, maybe we will break some plugins.
What do you think about the attached change?
Updated by Thomas Löber over 2 years ago
I don't think it's necessary to differentiate between User
and other classes.
base_class
is an ActiveRecord class method and returns exactly the class, whose name is stored in the customized_type
column, i.e. the base model for the STI models, if any:
User.base_class => Principal Issue.base_class => Issue
Updated by Marius BĂLTEANU over 2 years ago
- Target version changed from Candidate for next minor release to 4.2.8
I thought that maybe some plugins developers will add some custom fields that extend a base class and they don't want to filter after the base class.
Updated by Marius BĂLTEANU over 2 years ago
- Status changed from Confirmed to Resolved
- Assignee set to Marius BĂLTEANU
- Resolution set to Fixed
Patch posted by Thomas committed with a test.
Updated by Marius BĂLTEANU over 2 years ago
Updated by Marius BĂLTEANU over 2 years ago
- Status changed from Resolved to Closed