# 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
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
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