diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 6a362cb25..408b54afb 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -128,7 +128,7 @@ class CustomField < ActiveRecord::Base # Returns a ORDER BY clause that can used to sort customized # objects by their value of the custom field. - # Returns false, if the custom field can not be used for sorting. + # Returns nil if the custom field can not be used for sorting. def order_statement return nil if multiple? case field_format @@ -151,6 +151,18 @@ class CustomField < ActiveRecord::Base end end + # Returns a GROUP BY clause that can used to group by custom value + # Returns nil if the custom field can not be used for grouping. + def group_statement + return nil if multiple? + case field_format + when 'list', 'date', 'bool', 'int' + order_statement + else + nil + end + end + def <=>(field) position <=> field.position end diff --git a/app/models/query.rb b/app/models/query.rb index cd3a10f0a..b2d018906 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -57,10 +57,7 @@ class QueryCustomFieldColumn < QueryColumn def initialize(custom_field) self.name = "cf_#{custom_field.id}".to_sym self.sortable = custom_field.order_statement || false - if %w(list date bool int).include?(custom_field.field_format) && !custom_field.multiple? - self.groupable = custom_field.order_statement - end - self.groupable ||= false + self.groupable = custom_field.group_statement || false @cf = custom_field end