@@ -53,7 +53,8 @@ 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+ option_fields = options . delete ( :fields )
57+ @fieldset = ActiveModel ::Serializer ::Fieldset . new ( option_fields ) if option_fields
5758 end
5859
5960 # {http://jsonapi.org/format/#crud Requests are transactional, i.e. success or failure}
@@ -336,19 +337,21 @@ def resource_object_for(serializer, include_slice = {})
336337 end
337338
338339 def data_for ( serializer , include_slice )
340+ requested_fields = fieldset && fieldset . fields_for ( resource_object [ :type ] )
341+
339342 data = serializer . fetch ( self ) do
340343 resource_object = ResourceIdentifier . new ( serializer , instance_options ) . as_json
341344 break nil if resource_object . nil?
342345
343- requested_fields = fieldset && fieldset . fields_for ( resource_object [ :type ] )
344346 attributes = attributes_for ( serializer , requested_fields )
345347 resource_object [ :attributes ] = attributes if attributes . any?
346348 resource_object
347349 end
350+
348351 data . tap do |resource_object |
349352 next if resource_object . nil?
350353 # NOTE(BF): the attributes are cached above, separately from the relationships, below.
351- requested_associations = fieldset . fields_for ( resource_object [ :type ] ) || '*'
354+ requested_associations = requested_fields || '*'
352355 relationships = relationships_for ( serializer , requested_associations , include_slice )
353356 resource_object [ :relationships ] = relationships if relationships . any?
354357 end
0 commit comments