2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/active_hash_relation/association_filters.rb', line 2
def filter_associations(resource, params, model = nil)
unless model
model = model_class_name(resource)
if model.nil? || engine_name == model.to_s
model = model_class_name(resource, true)
end
end
model.reflect_on_all_associations.map(&:name).each do |association|
if params[association]
association_name = association.to_s.titleize.split.join
if self.configuration.has_filter_classes
if self.configuration.use_unscoped
association_filters = self.filter_class(association_name).new(
association_name.singularize.constantize.unscoped.all,
params[association]
).apply_filters
else
association_filters = self.filter_class(association_name).new(
association_name.singularize.constantize.all,
params[association]
).apply_filters
end
else
if self.configuration.use_unscoped
association_filters = ActiveHashRelation::FilterApplier.new(
association_name.singularize.constantize.unscoped.all,
params[association],
include_associations: true
).apply_filters
else
association_filters = ActiveHashRelation::FilterApplier.new(
association_name.singularize.constantize.all,
params[association],
include_associations: true
).apply_filters
end
end
resource = resource.joins(association).merge(association_filters)
end
end
return resource
end
|