Module: MongoidFilter::ClassMethods
- Defined in:
- lib/mongoid_filter.rb
Instance Attribute Summary collapse
Instance Method Summary collapse
- #can_filter_by(*fields) ⇒ Object
- #filter_by(filter_params) ⇒ Object
- #filter_form_object ⇒ Object
- #special_filter(field, deserializing_proc, options = {}) ⇒ Object
Instance Attribute Details
#filter_field_aliases ⇒ Object
21 22 23 |
# File 'lib/mongoid_filter.rb', line 21 def filter_field_aliases @filter_aliases ||= {} end |
#filter_fields ⇒ Object
13 14 15 |
# File 'lib/mongoid_filter.rb', line 13 def filter_fields @filter_fields ||= [] end |
#special_filters ⇒ Object
17 18 19 |
# File 'lib/mongoid_filter.rb', line 17 def special_filters @special_filters ||= {} end |
Instance Method Details
#can_filter_by(*fields) ⇒ Object
25 26 27 |
# File 'lib/mongoid_filter.rb', line 25 def can_filter_by(*fields) self.filter_fields.concat(fields.flatten.map(&:to_sym)) end |
#filter_by(filter_params) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/mongoid_filter.rb', line 36 def filter_by(filter_params) condition = {} prepare_filter_params(filter_params).each do |attribute, value| field_name, operator = parse_attribute(attribute) condition.merge!(build_expression(field_name, operator, value)) if field_name.in? filter_fields end criteria = where(condition) criteria.instance_variable_set(:@filter_form_object, FormObject.new(filter_params)) criteria end |
#filter_form_object ⇒ Object
47 48 49 |
# File 'lib/mongoid_filter.rb', line 47 def filter_form_object criteria.instance_variable_get(:@filter_form_object) || FormObject.new({}) end |
#special_filter(field, deserializing_proc, options = {}) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/mongoid_filter.rb', line 29 def special_filter(field, deserializing_proc, = {}) self.special_filters.merge!(field => deserializing_proc) field_name = [:field_name] self.filter_field_aliases.merge!(field => field_name) end |