11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/puffer/orm_adapter/mongoid.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.name] = value if field
res
end
scope = scope.any_of(searches(search_fields, options[:search])) if options[:search].present?
scope.where(conditions).order(order)
end
|