Method: QueryReport::FilterModule#apply_filters

Defined in:
lib/query_report/filter.rb

#apply_filters(query, http_params) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/query_report/filter.rb', line 30

def apply_filters(query, http_params)
  # apply default filter
  params = load_default_values_in_param(http_params) #need for ransack filter
  @search = query.search(params[:q])
  query = @search.result

  #apply custom filter
  @filters.select(&:custom?).each do |filter|
    ordered_custom_param_values = ordered_param_value_objects(filter)
    has_no_user_input = ordered_custom_param_values.all? { |p| p.nil? or p == '' }
    query = filter.block.call(query, *ordered_custom_param_values) if filter.block and !has_no_user_input
  end
  query
end