@@ -53,7 +53,7 @@ def self.fragment_cache(cached_hash, non_cached_hash, root = true)
5353 def initialize ( serializer , options = { } )
5454 super
5555 @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 ) )
5757 end
5858
5959 # {http://jsonapi.org/format/#crud Requests are transactional, i.e. success or failure}
@@ -335,6 +335,7 @@ def resource_object_for(serializer, include_slice = {})
335335 resource_object
336336 end
337337
338+ # rubocop:disable Metrics/CyclomaticComplexity
338339 def data_for ( serializer , include_slice )
339340 data = serializer . fetch ( self ) do
340341 resource_object = ResourceIdentifier . new ( serializer , instance_options ) . as_json
@@ -348,11 +349,12 @@ def data_for(serializer, include_slice)
348349 data . tap do |resource_object |
349350 next if resource_object . nil?
350351 # 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 ] ) ) || '*'
352353 relationships = relationships_for ( serializer , requested_associations , include_slice )
353354 resource_object [ :relationships ] = relationships if relationships . any?
354355 end
355356 end
357+ # rubocop:enable Metrics/CyclomaticComplexity
356358
357359 # {http://jsonapi.org/format/#document-resource-object-relationships Document Resource Object Relationship}
358360 # relationships
@@ -529,6 +531,12 @@ def pagination_links_for(serializer)
529531 def meta_for ( serializer )
530532 Meta . new ( serializer ) . as_json
531533 end
534+
535+ def fields_to_fieldset ( fields )
536+ return fields if fields . nil?
537+
538+ ActiveModel ::Serializer ::Fieldset . new ( fields )
539+ end
532540 end
533541 end
534542end
0 commit comments