Module: JSONAPI::Serialization::IncludesSerialization

Includes:
IncludeFiltering, IncludePathHelpers
Included in:
JSONAPI::Serializer
Defined in:
lib/json_api/serialization/concerns/includes_serialization.rb

Instance Method Summary collapse

Methods included from IncludeFiltering

#filter_loaded_records

Methods included from IncludePathHelpers

#include_paths_to_relationship_names, #normalize_include_paths

Instance Method Details

#build_include_context(fields, all_includes) ⇒ Object



26
27
28
# File 'lib/json_api/serialization/concerns/includes_serialization.rb', line 26

def build_include_context(fields, all_includes)
  IncludeContext.new(fields:, included_records: [], processed: Set.new, all_includes:)
end

#serialize_included(includes, fields = {}, context: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/json_api/serialization/concerns/includes_serialization.rb', line 16

def serialize_included(includes, fields = {}, context: nil)
  all_includes = normalize_include_paths(includes)
  return context&.included_records || [] if all_includes.empty?

  ctx = context || build_include_context(fields, all_includes)
  ctx.all_includes ||= all_includes
  all_includes.each { |path| serialize_include_path(record, path, ctx, path_from_root: "") }
  ctx.included_records
end