@@ -9,6 +9,10 @@ def find_related_ids(relationship, options)
99 end
1010
1111 module ClassMethods
12+ def default_find_related_through ( polymorphic = false )
13+ polymorphic ? :primary : :primary
14+ end
15+
1216 # Finds Resources using the `filters`. Pagination and sort options are used when provided
1317 #
1418 # @param filters [Hash] the filters hash
@@ -20,9 +24,9 @@ module ClassMethods
2024 def find ( filters , options )
2125 sort_criteria = options . fetch ( :sort_criteria ) { [ ] }
2226
23- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
24- filters : filters ,
25- sort_criteria : sort_criteria )
27+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
28+ filters : filters ,
29+ sort_criteria : sort_criteria )
2630
2731 paginator = options [ :paginator ]
2832
@@ -42,8 +46,8 @@ def find(filters, options)
4246 #
4347 # @return [Integer] the count
4448 def count ( filters , options )
45- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
46- filters : filters )
49+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
50+ filters : filters )
4751
4852 records = apply_request_settings_to_records ( records : records ( options ) ,
4953 filters : filters ,
@@ -103,11 +107,11 @@ def find_fragments(filters, options)
103107
104108 sort_criteria = options . fetch ( :sort_criteria ) { [ ] }
105109
106- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : resource_klass ,
107- source_relationship : nil ,
108- relationships : linkage_relationships . collect ( &:name ) ,
109- sort_criteria : sort_criteria ,
110- filters : filters )
110+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : resource_klass ,
111+ source_relationship : nil ,
112+ relationships : linkage_relationships . collect ( &:name ) ,
113+ sort_criteria : sort_criteria ,
114+ filters : filters )
111115
112116 paginator = options [ :paginator ]
113117
@@ -234,9 +238,9 @@ def count_related(source_resource, relationship, options)
234238 filters = options . fetch ( :filters , { } )
235239
236240 # Joins in this case are related to the related_klass
237- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
238- source_relationship : relationship ,
239- filters : filters )
241+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
242+ source_relationship : relationship ,
243+ filters : filters )
240244
241245 records = apply_request_settings_to_records ( records : records ( options ) ,
242246 resource_klass : related_klass ,
@@ -377,11 +381,11 @@ def find_related_monomorphic_fragments(source_fragments, relationship, options,
377381 sort_criteria << { field : field , direction : sort [ :direction ] }
378382 end
379383
380- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
381- source_relationship : relationship ,
382- relationships : linkage_relationships . collect ( &:name ) ,
383- sort_criteria : sort_criteria ,
384- filters : filters )
384+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
385+ source_relationship : relationship ,
386+ relationships : linkage_relationships . collect ( &:name ) ,
387+ sort_criteria : sort_criteria ,
388+ filters : filters )
385389
386390 paginator = options [ :paginator ]
387391
@@ -495,10 +499,10 @@ def find_related_polymorphic_fragments(source_fragments, relationship, options,
495499 end
496500 end
497501
498- join_manager = ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ,
499- source_relationship : relationship ,
500- relationships : linkage_relationship_paths ,
501- filters : filters )
502+ join_manager = ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ,
503+ source_relationship : relationship ,
504+ relationships : linkage_relationship_paths ,
505+ filters : filters )
502506
503507 paginator = options [ :paginator ]
504508
@@ -630,7 +634,7 @@ def find_related_polymorphic_fragments(source_fragments, relationship, options,
630634 end
631635
632636 def apply_request_settings_to_records ( records :,
633- join_manager : ActiveRelation ::JoinManagerV10 . new ( resource_klass : self ) ,
637+ join_manager : ActiveRelation ::JoinManagerThroughPrimary . new ( resource_klass : self ) ,
634638 resource_klass : self ,
635639 filters : { } ,
636640 primary_keys : nil ,
0 commit comments