@@ -53,7 +53,7 @@ def self.fragment_cache(cached_hash, non_cached_hash, root = true)
53
53
def initialize ( serializer , options = { } )
54
54
super
55
55
@include_directive = JSONAPI ::IncludeDirective . new ( options [ :include ] , allow_wildcard : true )
56
- @fieldset = options [ :fieldset ] || ActiveModel :: Serializer :: Fieldset . new ( options . delete ( :fields ) )
56
+ @fieldset = options [ :fieldset ] || fields_to_fieldset ( options . delete ( :fields ) )
57
57
end
58
58
59
59
# {http://jsonapi.org/format/#crud Requests are transactional, i.e. success or failure}
@@ -335,6 +335,7 @@ def resource_object_for(serializer, include_slice = {})
335
335
resource_object
336
336
end
337
337
338
+ # rubocop:disable Metrics/CyclomaticComplexity
338
339
def data_for ( serializer , include_slice )
339
340
data = serializer . fetch ( self ) do
340
341
resource_object = ResourceIdentifier . new ( serializer , instance_options ) . as_json
@@ -348,11 +349,12 @@ def data_for(serializer, include_slice)
348
349
data . tap do |resource_object |
349
350
next if resource_object . nil?
350
351
# NOTE(BF): the attributes are cached above, separately from the relationships, below.
351
- requested_associations = fieldset . fields_for ( resource_object [ :type ] ) || '*'
352
+ requested_associations = ( fieldset && fieldset . fields_for ( resource_object [ :type ] ) ) || '*'
352
353
relationships = relationships_for ( serializer , requested_associations , include_slice )
353
354
resource_object [ :relationships ] = relationships if relationships . any?
354
355
end
355
356
end
357
+ # rubocop:enable Metrics/CyclomaticComplexity
356
358
357
359
# {http://jsonapi.org/format/#document-resource-object-relationships Document Resource Object Relationship}
358
360
# relationships
@@ -529,6 +531,12 @@ def pagination_links_for(serializer)
529
531
def meta_for ( serializer )
530
532
Meta . new ( serializer ) . as_json
531
533
end
534
+
535
+ def fields_to_fieldset ( fields )
536
+ return fields if fields . nil?
537
+
538
+ ActiveModel ::Serializer ::Fieldset . new ( fields )
539
+ end
532
540
end
533
541
end
534
542
end
0 commit comments