@@ -53,7 +53,8 @@ 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
+ option_fields = options . delete ( :fields )
57
+ @fieldset = ActiveModel ::Serializer ::Fieldset . new ( option_fields ) if option_fields
57
58
end
58
59
59
60
# {http://jsonapi.org/format/#crud Requests are transactional, i.e. success or failure}
@@ -336,19 +337,21 @@ def resource_object_for(serializer, include_slice = {})
336
337
end
337
338
338
339
def data_for ( serializer , include_slice )
340
+ requested_fields = fieldset && fieldset . fields_for ( resource_object [ :type ] )
341
+
339
342
data = serializer . fetch ( self ) do
340
343
resource_object = ResourceIdentifier . new ( serializer , instance_options ) . as_json
341
344
break nil if resource_object . nil?
342
345
343
- requested_fields = fieldset && fieldset . fields_for ( resource_object [ :type ] )
344
346
attributes = attributes_for ( serializer , requested_fields )
345
347
resource_object [ :attributes ] = attributes if attributes . any?
346
348
resource_object
347
349
end
350
+
348
351
data . tap do |resource_object |
349
352
next if resource_object . nil?
350
353
# 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 || '*'
352
355
relationships = relationships_for ( serializer , requested_associations , include_slice )
353
356
resource_object [ :relationships ] = relationships if relationships . any?
354
357
end
0 commit comments