Module: JSONAPI::Utils::Support::Filter

Defined in:
lib/jsonapi/utils/support/filter.rb,
lib/jsonapi/utils/support/filter/custom.rb,
lib/jsonapi/utils/support/filter/default.rb

Defined Under Namespace

Modules: Custom, Default

Instance Method Summary collapse

Instance Method Details

#apply_filter(records, options = {}) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/jsonapi/utils/support/filter.rb', line 5

def apply_filter(records, options = {})
  if apply_filter?(records, options)
    records.where(filter_params)
  else
    records
  end
end

#apply_filter?(records, options = {}) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
# File 'lib/jsonapi/utils/support/filter.rb', line 13

def apply_filter?(records, options = {})
  params[:filter].present? && records.respond_to?(:where) &&
    (options[:filter].nil? || options[:filter])
end

#filter_paramsObject



18
19
20
21
22
23
24
25
26
27
# File 'lib/jsonapi/utils/support/filter.rb', line 18

def filter_params
  @_filter_params ||=
    case params[:filter]
    when Hash, ActionController::Parameters
      default_filters.each_with_object({}) do |field, hash|
        unformatted_field = @request.unformat_key(field)
        hash[unformatted_field] = params[:filter][field]
      end
    end
end