22 lines
538 B
Ruby
22 lines
538 B
Ruby
# frozen_string_literal: true
|
|
module RansackSupport
|
|
def ransack(base, filter)
|
|
base.ransack(build_ransack_query(base, filter)).result
|
|
end
|
|
|
|
def build_ransack_query(base, filter)
|
|
filter = filter.to_h
|
|
mapped_filter = {}
|
|
|
|
filter.each do |parent_key, parent_value|
|
|
next unless base.ransackable_attributes.include?(parent_key.to_s)
|
|
|
|
parent_value.each do |children_key, children_value|
|
|
mapped_filter["#{parent_key}_#{children_key}".to_sym] = children_value
|
|
end
|
|
end
|
|
|
|
mapped_filter
|
|
end
|
|
end
|