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

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