11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/puffer/orm_adapter/active_record.rb', line 11
def filter scope, fields, options = {}
fields = fields.columns
conditions, order = extract_conditions_and_order!(options)
conditions_fields = fields.select {|f| conditions.keys.include?(f.field_name)}.to_fieldset
search_fields = fields.select {|f| !conditions_fields.include?(f) && search_types.include?(f.column_type)}
all_fields = conditions_fields + search_fields
conditions = conditions.reduce({}) do |res, (name, value)|
field = conditions_fields[name]
res[field.query_column] = value if field
res
end
order = order.map {|field, direction| "#{field} #{direction}"}.join(', ')
scope.includes(includes(all_fields)).where(searches(search_fields, options[:search])).where(conditions).order(order)
end
|