Module: Toller

Extended by:
ActiveSupport::Concern
Defined in:
lib/toller.rb,
lib/toller/sort.rb,
lib/toller/filter.rb,
lib/toller/version.rb,
lib/toller/retriever.rb,
lib/toller/sorts/order_handler.rb,
lib/toller/sorts/scope_handler.rb,
lib/toller/filters/mutators/date.rb,
lib/toller/filters/mutators/time.rb,
lib/toller/filters/scope_handler.rb,
lib/toller/filters/where_handler.rb,
lib/toller/filters/mutators/boolean.rb,
lib/toller/filters/mutators/integer.rb,
lib/toller/filters/mutators/datetime.rb

Overview

Toller

Query param based filtering and sorting

Defined Under Namespace

Modules: Filters, Sorts Classes: Filter, Retriever, Sort

Constant Summary collapse

VERSION =

Returns the current gem version.

Returns:

  • (String)

    the current gem version

"1.0.0"

Instance Method Summary collapse

Instance Method Details

#filter_param_keySymbol

Override in an including controller to change the query param Toller reads filters from.

Returns:

  • (Symbol)

    the query param key holding filter params



84
85
86
# File 'lib/toller.rb', line 84

def filter_param_key
  :filters
end

#filter_paramsHash

Returns the current request's filter params, keyed by filter parameter name.

Returns:

  • (Hash)

    the current request's filter params, keyed by filter parameter name



69
70
71
# File 'lib/toller.rb', line 69

def filter_params
  params.fetch(filter_param_key.to_sym, {})
end

#retrieve(collection) ⇒ ActiveRecord::Relation

Applies every active filter/sort for the current request to collection.

Parameters:

  • collection (ActiveRecord::Relation)

    the collection to filter/sort

Returns:

  • (ActiveRecord::Relation)

    the filtered and sorted collection



28
29
30
# File 'lib/toller.rb', line 28

def retrieve(collection)
  Retriever.filter(collection, filter_params, sort_params, retrievals)
end

#sort_param_keySymbol

Override in an including controller to change the query param Toller reads sorts from.

Returns:

  • (Symbol)

    the query param key holding sort params



93
94
95
# File 'lib/toller.rb', line 93

def sort_param_key
  :sort
end

#sort_paramsArray<String>

Returns the current request's sort params, e.g. ['-published_at', 'title'].

Returns:

  • (Array<String>)

    the current request's sort params, e.g. ['-published_at', 'title']



75
76
77
# File 'lib/toller.rb', line 75

def sort_params
  params.fetch(sort_param_key.to_sym, "").split(",")
end