Class: Might::RansackableFilterParametersAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/might/ransackable_filter_parameters_adapter.rb

Overview

Converts array of parameters to hash familiar to ransack gem

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ RansackableFilterParametersAdapter

Returns a new instance of RansackableFilterParametersAdapter.



6
7
8
# File 'lib/might/ransackable_filter_parameters_adapter.rb', line 6

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/might/ransackable_filter_parameters_adapter.rb', line 10

def call(env)
  scope, params = env

  ransackable_parameters = Array(params[:filter]).reject { |f| f.predicate.nil? }
    .each_with_object({}) do |filter, ransackable_filters|
    ransackable_filters[canonical_name_for(filter)] = filter.value
  end

  app.call([scope, params.merge(filter: ransackable_parameters)])
end