@@ -235,17 +235,17 @@ def resource_objects_for(serializers)
235
235
@primary = [ ]
236
236
@included = [ ]
237
237
@resource_identifiers = Set . new
238
- serializers . each { |serializer | process_resource ( serializer , true ) }
238
+ serializers . each { |serializer | process_resource ( serializer , true , @include_directive ) }
239
239
serializers . each { |serializer | process_relationships ( serializer , @include_directive ) }
240
240
241
241
[ @primary , @included ]
242
242
end
243
243
244
- def process_resource ( serializer , primary )
244
+ def process_resource ( serializer , primary , include_slice = { } )
245
245
resource_identifier = ResourceIdentifier . new ( serializer , instance_options ) . as_json
246
246
return false unless @resource_identifiers . add? ( resource_identifier )
247
247
248
- resource_object = resource_object_for ( serializer )
248
+ resource_object = resource_object_for ( serializer , include_slice )
249
249
if primary
250
250
@primary << resource_object
251
251
else
@@ -255,21 +255,21 @@ def process_resource(serializer, primary)
255
255
true
256
256
end
257
257
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 ] )
261
261
end
262
262
end
263
263
264
- def process_relationship ( serializer , include_directive )
264
+ def process_relationship ( serializer , include_slice )
265
265
if serializer . respond_to? ( :each )
266
- serializer . each { |s | process_relationship ( s , include_directive ) }
266
+ serializer . each { |s | process_relationship ( s , include_slice ) }
267
267
return
268
268
end
269
269
return unless serializer && serializer . object
270
- return unless process_resource ( serializer , false )
270
+ return unless process_resource ( serializer , false , include_slice )
271
271
272
- process_relationships ( serializer , include_directive )
272
+ process_relationships ( serializer , include_slice )
273
273
end
274
274
275
275
# {http://jsonapi.org/format/#document-resource-object-attributes Document Resource Object Attributes}
@@ -293,7 +293,7 @@ def attributes_for(serializer, fields)
293
293
end
294
294
295
295
# {http://jsonapi.org/format/#document-resource-objects Document Resource Objects}
296
- def resource_object_for ( serializer )
296
+ def resource_object_for ( serializer , include_slice = { } )
297
297
resource_object = serializer . fetch ( self ) do
298
298
resource_object = ResourceIdentifier . new ( serializer , instance_options ) . as_json
299
299
@@ -304,7 +304,7 @@ def resource_object_for(serializer)
304
304
end
305
305
306
306
requested_associations = fieldset . fields_for ( resource_object [ :type ] ) || '*'
307
- relationships = relationships_for ( serializer , requested_associations )
307
+ relationships = relationships_for ( serializer , requested_associations , include_slice )
308
308
resource_object [ :relationships ] = relationships if relationships . any?
309
309
310
310
links = links_for ( serializer )
@@ -432,12 +432,12 @@ def resource_object_for(serializer)
432
432
# id: 'required-id',
433
433
# meta: meta
434
434
# }.reject! {|_,v| v.nil? }
435
- def relationships_for ( serializer , requested_associations )
435
+ def relationships_for ( serializer , requested_associations , include_slice )
436
436
include_directive = JSONAPI ::IncludeDirective . new (
437
437
requested_associations ,
438
438
allow_wildcard : true
439
439
)
440
- serializer . associations ( include_directive ) . each_with_object ( { } ) do |association , hash |
440
+ serializer . associations ( include_directive , include_slice ) . each_with_object ( { } ) do |association , hash |
441
441
hash [ association . key ] = Relationship . new ( serializer , instance_options , association ) . as_json
442
442
end
443
443
end
0 commit comments