Skip to content

Commit 0c367d2

Browse files
committed
Minor code refactor
1 parent 9c65983 commit 0c367d2

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

lib/fast_jsonapi/object_serializer.rb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,21 +232,28 @@ def create_relationship(base_key, relationship_type, options, block)
232232
Relationship.new(
233233
key: options[:key] || run_key_transform(base_key),
234234
name: name,
235-
id_method_name: options[:id_method_name] || "#{base_serialization_key}#{id_postfix}".to_sym,
235+
id_method_name: compute_id_method_name(
236+
options[:id_method_name],
237+
"#{base_serialization_key}#{id_postfix}".to_sym,
238+
block
239+
),
236240
record_type: options[:record_type] || run_key_transform(base_key_sym),
237241
object_method_name: options[:object_method_name] || name,
238242
object_block: block,
239243
serializer: compute_serializer_name(options[:serializer] || base_key_sym),
240244
relationship_type: relationship_type,
241245
cached: options[:cached],
242246
polymorphic: fetch_polymorphic_option(options),
243-
conditional_proc: options[:if],
244-
id_method_name_for_inferred_objects: compute_object_method_name_for_inferred_objects(options[:id_method_name], block)
247+
conditional_proc: options[:if]
245248
)
246249
end
247250

248-
def compute_object_method_name_for_inferred_objects(id_method_name, block)
249-
(id_method_name.present? && block.present?) ? id_method_name : :id
251+
def compute_id_method_name(custom_id_method_name, id_method_name_from_relationship, block)
252+
if block.present?
253+
custom_id_method_name || :id
254+
else
255+
custom_id_method_name || id_method_name_from_relationship
256+
end
250257
end
251258

252259
def compute_serializer_name(serializer_key)

lib/fast_jsonapi/relationship.rb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module 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, :id_method_name_for_inferred_objects
3+
attr_reader :key, :name, :id_method_name, :record_type, :object_method_name, :object_block, :serializer, :relationship_type, :cached, :polymorphic, :conditional_proc
44

55
def initialize(
66
key:,
@@ -13,8 +13,7 @@ def initialize(
1313
relationship_type:,
1414
cached: false,
1515
polymorphic:,
16-
conditional_proc:,
17-
id_method_name_for_inferred_objects:
16+
conditional_proc:
1817
)
1918
@key = key
2019
@name = name
@@ -27,7 +26,6 @@ def initialize(
2726
@cached = cached
2827
@polymorphic = polymorphic
2928
@conditional_proc = conditional_proc
30-
@id_method_name_for_inferred_objects = id_method_name_for_inferred_objects
3129
end
3230

3331
def serialize(record, serialization_params, output_hash)
@@ -90,8 +88,8 @@ def id_hash(id, record_type, default_return=false)
9088
def fetch_id(record, params)
9189
if object_block.present?
9290
object = object_block.call(record, params)
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)
91+
return object.map { |item| item.public_send(id_method_name) } if object.respond_to? :map
92+
return object.try(id_method_name)
9593
end
9694
record.public_send(id_method_name)
9795
end

0 commit comments

Comments
 (0)