Class: FilterMe::Filter::ArelFieldFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/filter_me/filter/arel_field_filter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filters, configuration) ⇒ ArelFieldFilter

Returns a new instance of ArelFieldFilter.



6
7
8
9
10
11
12
13
# File 'lib/filter_me/filter/arel_field_filter.rb', line 6

def initialize(filters, configuration)
  @filters = filters
  @configuration = configuration

  unless validator.valid_filters?(filters)
    raise FiltersNotWhiteListedError, "The filter types #{validator.invalid_filters(filters)} are not allowed."
  end
end

Instance Attribute Details

#configurationObject

Returns the value of attribute configuration.



4
5
6
# File 'lib/filter_me/filter/arel_field_filter.rb', line 4

def configuration
  @configuration
end

#filtersObject

Returns the value of attribute filters.



4
5
6
# File 'lib/filter_me/filter/arel_field_filter.rb', line 4

def filters
  @filters
end

Instance Method Details

#filter(relation) ⇒ Object



15
16
17
# File 'lib/filter_me/filter/arel_field_filter.rb', line 15

def filter(relation)
  model_class.where(arel_filters.inject { |arel_relation, filter| filter.and(arel_relation) })
end