Module: FilterFactory::ActiveRecord::Filter
- Defined in:
- lib/filter_factory/active_record/filter.rb
Instance Method Summary collapse
-
#filter(filter_object) ⇒ ActiveRecord::Relation
Applies the filter passed as an argument to model class or relation.
Instance Method Details
#filter(filter_object) ⇒ ActiveRecord::Relation
Applies the filter passed as an argument to model class or relation
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/filter_factory/active_record/filter.rb', line 8 def filter(filter_object) conditions = filter_object.filled_fields.map do |field| FilterFactory::ActiveRecord::Condition.new(field.name, field.value).method(field.condition) end relation = self.is_a?(::ActiveRecord::Relation) ? self : nil conditions.inject(relation) do |res, condition| res ? res.instance_eval(&condition) : instance_eval(&condition) end end |