11module FastJsonapi
22 class Relationship
3- attr_reader :key , :name , :id_method_name , :record_type , :object_method_name , :object_block , :serializer , :relationship_type , :cached , :polymorphic , :conditional_proc
3+ attr_reader :key , :name , :id_method_name , :record_type , :object_method_name , :object_block , :serializer , :relationship_type , :cached , :polymorphic , :conditional_proc , :id_method_name_for_inferred_objects
44
55 def initialize (
66 key :,
@@ -13,7 +13,8 @@ def initialize(
1313 relationship_type :,
1414 cached : false ,
1515 polymorphic :,
16- conditional_proc :
16+ conditional_proc :,
17+ id_method_name_for_inferred_objects :
1718 )
1819 @key = key
1920 @name = name
@@ -26,6 +27,7 @@ def initialize(
2627 @cached = cached
2728 @polymorphic = polymorphic
2829 @conditional_proc = conditional_proc
30+ @id_method_name_for_inferred_objects = id_method_name_for_inferred_objects
2931 end
3032
3133 def serialize ( record , serialization_params , output_hash )
@@ -86,13 +88,11 @@ def id_hash(id, record_type, default_return=false)
8688 end
8789
8890 def fetch_id ( record , params )
89- unless object_block . nil ?
91+ if object_block . present ?
9092 object = object_block . call ( record , params )
91-
92- return object . map ( &:id ) if object . respond_to? :map
93- return object . try ( :id )
93+ return object . map { |item | item . public_send ( id_method_name_for_inferred_objects ) } if object . respond_to? :map
94+ return object . try ( id_method_name_for_inferred_objects )
9495 end
95-
9696 record . public_send ( id_method_name )
9797 end
9898 end
0 commit comments