Class: Filterameter::Filters::NestedFilter

Inherits:
Object
  • Object
show all
Includes:
Errors
Defined in:
lib/filterameter/filters/nested_filter.rb

Overview

# Nested Attribute Filter

Class NestedFilter joins the nested table(s) then merges the filter to the association’s model.

Direct Known Subclasses

NestedCollectionFilter

Instance Attribute Summary

Attributes included from Errors

#errors

Instance Method Summary collapse

Methods included from Errors

#valid?

Constructor Details

#initialize(association_names, association_model, attribute_filter) ⇒ NestedFilter

Returns a new instance of NestedFilter.



11
12
13
14
15
# File 'lib/filterameter/filters/nested_filter.rb', line 11

def initialize(association_names, association_model, attribute_filter)
  @joins_values = Filterameter::Helpers::JoinsValuesBuilder.build(association_names)
  @association_model = association_model
  @attribute_filter = attribute_filter
end

Instance Method Details

#apply(query, value) ⇒ Object



17
18
19
20
# File 'lib/filterameter/filters/nested_filter.rb', line 17

def apply(query, value)
  query.joins(@joins_values)
       .merge(@attribute_filter.apply(@association_model.all, value))
end