@@ -7,6 +7,10 @@ def find_related_ids(relationship, options)
77 end
88
99 module ClassMethods
10+ def default_find_related_through ( polymorphic = false )
11+ polymorphic ? :primary : :primary
12+ end
13+
1014 # Finds Resources using the `filters`. Pagination and sort options are used when provided
1115 #
1216 # @param filters [Hash] the filters hash
@@ -18,9 +22,9 @@ module ClassMethods
1822 def find ( filters , options )
1923 sort_criteria = options . fetch ( :sort_criteria ) { [ ] }
2024
21- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
22- filters : filters ,
23- sort_criteria : sort_criteria )
25+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
26+ filters : filters ,
27+ sort_criteria : sort_criteria )
2428
2529 paginator = options [ :paginator ]
2630
@@ -40,8 +44,8 @@ def find(filters, options)
4044 #
4145 # @return [Integer] the count
4246 def count ( filters , options )
43- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
44- filters : filters )
47+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
48+ filters : filters )
4549
4650 records = apply_request_settings_to_records ( records : records ( options ) ,
4751 filters : filters ,
@@ -101,11 +105,11 @@ def find_fragments(filters, options)
101105
102106 sort_criteria = options . fetch ( :sort_criteria ) { [ ] }
103107
104- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : resource_klass ,
105- source_relationship : nil ,
106- relationships : linkage_relationships . collect ( &:name ) ,
107- sort_criteria : sort_criteria ,
108- filters : filters )
108+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : resource_klass ,
109+ source_relationship : nil ,
110+ relationships : linkage_relationships . collect ( &:name ) ,
111+ sort_criteria : sort_criteria ,
112+ filters : filters )
109113
110114 paginator = options [ :paginator ]
111115
@@ -232,9 +236,9 @@ def count_related(source_resource, relationship, options)
232236 filters = options . fetch ( :filters , { } )
233237
234238 # Joins in this case are related to the related_klass
235- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
236- source_relationship : relationship ,
237- filters : filters )
239+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
240+ source_relationship : relationship ,
241+ filters : filters )
238242
239243 records = apply_request_settings_to_records ( records : records ( options ) ,
240244 resource_klass : related_klass ,
@@ -375,11 +379,11 @@ def find_related_monomorphic_fragments(source_fragments, relationship, options,
375379 sort_criteria << { field : field , direction : sort [ :direction ] }
376380 end
377381
378- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
379- source_relationship : relationship ,
380- relationships : linkage_relationships . collect ( &:name ) ,
381- sort_criteria : sort_criteria ,
382- filters : filters )
382+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
383+ source_relationship : relationship ,
384+ relationships : linkage_relationships . collect ( &:name ) ,
385+ sort_criteria : sort_criteria ,
386+ filters : filters )
383387
384388 paginator = options [ :paginator ]
385389
@@ -493,10 +497,10 @@ def find_related_polymorphic_fragments(source_fragments, relationship, options,
493497 end
494498 end
495499
496- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
497- source_relationship : relationship ,
498- relationships : linkage_relationship_paths ,
499- filters : filters )
500+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
501+ source_relationship : relationship ,
502+ relationships : linkage_relationship_paths ,
503+ filters : filters )
500504
501505 paginator = options [ :paginator ]
502506
@@ -628,7 +632,7 @@ def find_related_polymorphic_fragments(source_fragments, relationship, options,
628632 end
629633
630634 def apply_request_settings_to_records ( records :,
631- join_manager : ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ) ,
635+ join_manager : ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ) ,
632636 resource_klass : self ,
633637 filters : { } ,
634638 primary_keys : nil ,
0 commit comments