Module: FetcheableOnApi::Filterable::ClassMethods

Defined in:
lib/fetcheable_on_api/filterable.rb

Overview

Class methods made available to your controllers.

Instance Method Summary collapse

Instance Method Details

#filter_by(*attrs) ⇒ Object

Define a filterable attribute.

Parameters:

  • attrs (Array)

    options to define one or more filters.

Options Hash (*attrs):

  • :as (String, nil)

    Alias the filtered attribute

  • :class_name (String, nil)

    Override the class of the filter target

  • :with (String, nil)

    Use a specific predicate

See Also:



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/fetcheable_on_api/filterable.rb', line 53

def filter_by(*attrs)
  options = attrs.extract_options!
  options.symbolize_keys!
  options.assert_valid_keys(
    :as, :class_name, :with, :format, :association
  )

  self.filters_configuration = filters_configuration.dup

  attrs.each do |attr|
    filters_configuration[attr] ||= {
      as: options[:as] || attr,
    }

    filters_configuration[attr].merge!(options)
  end
end