Module: Filterameter::DeclarativeFilters
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/filterameter/declarative_filters.rb
Overview
Declarative Controller Filters
Mixin DeclarativeFilters should be included in controllers to enable the filter DSL.
Instance Method Summary collapse
-
#build_query_from_filters(starting_query = nil) ⇒ Object
Returns an ActiveRecord query from the filter parameters.
- #filter_parameters ⇒ Object
-
#query_parameters ⇒ Object
Returns the current Filterameter query state for pagination and sortable links.
Instance Method Details
#build_query_from_filters(starting_query = nil) ⇒ Object
Returns an ActiveRecord query from the filter parameters.
def index
@widgets = build_query_from_filters
end
The method optionally takes a starting query. For example, this restricts the results to only active widgets:
def index
@widgets = build_query_from_filters(Widgets.where(active: true))
end
The starting query can also be used to provide eager loading:
def index
@widgets = build_query_from_filters(Widgets.includes(:manufacturer))
end
160 161 162 |
# File 'lib/filterameter/declarative_filters.rb', line 160 def build_query_from_filters(starting_query = nil) self.class.filter_coordinator.build_query(filter_parameters, starting_query) end |
#filter_parameters ⇒ Object
173 174 175 |
# File 'lib/filterameter/declarative_filters.rb', line 173 def filter_parameters filterameter_request_parameters.filter_and_sort_params end |
#query_parameters ⇒ Object
Returns the current Filterameter query state for pagination and sortable links. Its sort is the requested sort, or this controller's declared default when none was requested.
166 167 168 169 170 171 |
# File 'lib/filterameter/declarative_filters.rb', line 166 def query_parameters Filterameter::QueryParameters.new( filterameter_request_parameters, default_sort: self.class.filter_coordinator.default_sort_parameters ) end |