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_by_query, #filter_by_where_hash, #filter_loaded_records, #record_matches_where_hash?, #where_values_hash_for_scope

Methods included from IncludePathHelpers

#include_paths_to_relationship_names, #normalize_include_paths

Instance Method Details

#build_include_context(fields, all_includes) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/json_api/serialization/concerns/includes_serialization.rb', line 25

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

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



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

def serialize_included(includes, fields = {})
  all_includes = normalize_include_paths(includes)
  return [] if all_includes.empty?

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