@@ -235,17 +235,17 @@ def resource_objects_for(serializers)
235235 @primary = [ ]
236236 @included = [ ]
237237 @resource_identifiers = Set . new
238- serializers . each { |serializer | process_resource ( serializer , true ) }
238+ serializers . each { |serializer | process_resource ( serializer , true , @include_directive ) }
239239 serializers . each { |serializer | process_relationships ( serializer , @include_directive ) }
240240
241241 [ @primary , @included ]
242242 end
243243
244- def process_resource ( serializer , primary )
244+ def process_resource ( serializer , primary , include_slice = { } )
245245 resource_identifier = ResourceIdentifier . new ( serializer , instance_options ) . as_json
246246 return false unless @resource_identifiers . add? ( resource_identifier )
247247
248- resource_object = resource_object_for ( serializer )
248+ resource_object = resource_object_for ( serializer , include_slice )
249249 if primary
250250 @primary << resource_object
251251 else
@@ -255,21 +255,21 @@ def process_resource(serializer, primary)
255255 true
256256 end
257257
258- def process_relationships ( serializer , include_directive )
259- serializer . associations ( include_directive ) . each do |association |
260- process_relationship ( association . serializer , include_directive [ association . key ] )
258+ def process_relationships ( serializer , include_slice )
259+ serializer . associations ( include_slice ) . each do |association |
260+ process_relationship ( association . serializer , include_slice [ association . key ] )
261261 end
262262 end
263263
264- def process_relationship ( serializer , include_directive )
264+ def process_relationship ( serializer , include_slice )
265265 if serializer . respond_to? ( :each )
266- serializer . each { |s | process_relationship ( s , include_directive ) }
266+ serializer . each { |s | process_relationship ( s , include_slice ) }
267267 return
268268 end
269269 return unless serializer && serializer . object
270- return unless process_resource ( serializer , false )
270+ return unless process_resource ( serializer , false , include_slice )
271271
272- process_relationships ( serializer , include_directive )
272+ process_relationships ( serializer , include_slice )
273273 end
274274
275275 # {http://jsonapi.org/format/#document-resource-object-attributes Document Resource Object Attributes}
@@ -293,7 +293,7 @@ def attributes_for(serializer, fields)
293293 end
294294
295295 # {http://jsonapi.org/format/#document-resource-objects Document Resource Objects}
296- def resource_object_for ( serializer )
296+ def resource_object_for ( serializer , include_slice = { } )
297297 resource_object = serializer . fetch ( self ) do
298298 resource_object = ResourceIdentifier . new ( serializer , instance_options ) . as_json
299299
@@ -304,7 +304,7 @@ def resource_object_for(serializer)
304304 end
305305
306306 requested_associations = fieldset . fields_for ( resource_object [ :type ] ) || '*'
307- relationships = relationships_for ( serializer , requested_associations )
307+ relationships = relationships_for ( serializer , requested_associations , include_slice )
308308 resource_object [ :relationships ] = relationships if relationships . any?
309309
310310 links = links_for ( serializer )
@@ -432,12 +432,12 @@ def resource_object_for(serializer)
432432 # id: 'required-id',
433433 # meta: meta
434434 # }.reject! {|_,v| v.nil? }
435- def relationships_for ( serializer , requested_associations )
435+ def relationships_for ( serializer , requested_associations , include_slice )
436436 include_directive = JSONAPI ::IncludeDirective . new (
437437 requested_associations ,
438438 allow_wildcard : true
439439 )
440- serializer . associations ( include_directive ) . each_with_object ( { } ) do |association , hash |
440+ serializer . associations ( include_directive , include_slice ) . each_with_object ( { } ) do |association , hash |
441441 hash [ association . key ] = Relationship . new ( serializer , instance_options , association ) . as_json
442442 end
443443 end
0 commit comments