Class: JSONAPI::Serializer
- Inherits:
-
Object
- Object
- JSONAPI::Serializer
- Includes:
- ActiveStorageSupport, JSONAPI::Serialization::AttributesSerialization, JSONAPI::Serialization::IncludesSerialization, JSONAPI::Serialization::LinksSerialization, JSONAPI::Serialization::MetaSerialization, JSONAPI::Serialization::RelationshipsSerialization
- Defined in:
- lib/json_api/serialization/serializer.rb
Constant Summary collapse
- JSONAPI_VERSION =
"1.1"
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(record, definition: nil, base_definition: nil, parent_record: nil, association_name: nil, authorization_context: nil, include_filter_cache: nil) ⇒ Serializer
constructor
A new instance of Serializer.
- #serialize_record(fields = {}, requested_relationships: nil) ⇒ Object
-
#to_hash(include: [], fields: {}, document_meta: nil, include_context: nil) ⇒ Object
include_context shares one IncludeContext across a whole collection: a record reached from several primaries then serializes once instead of once per primary.
Methods included from JSONAPI::Serialization::MetaSerialization
Methods included from JSONAPI::Serialization::IncludesSerialization
#build_include_context, #serialize_included
Methods included from JSONAPI::Serialization::IncludeFiltering
Methods included from JSONAPI::Serialization::IncludePathHelpers
#include_paths_to_relationship_names, #normalize_include_paths
Methods included from JSONAPI::Serialization::LinksSerialization
Methods included from JSONAPI::Serialization::RelationshipsSerialization
Methods included from JSONAPI::Serialization::AttributesSerialization
Methods included from ActiveStorageSupport
#active_storage_attachment?, #append_only_enabled?, #attach_active_storage_files, #extract_active_storage_params_from_hash, #filter_active_storage_from_includes, #filter_polymorphic_from_includes, #find_blob_by_signed_id, #find_relationship_definition, #process_active_storage_attachment, #purge_on_nil_enabled?, #resolve_model_class_for_attachment, #serialize_active_storage_relationship, #serialize_blob_identifier
Constructor Details
#initialize(record, definition: nil, base_definition: nil, parent_record: nil, association_name: nil, authorization_context: nil, include_filter_cache: nil) ⇒ Serializer
Returns a new instance of Serializer.
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/json_api/serialization/serializer.rb', line 38 def initialize(record, definition: nil, base_definition: nil, parent_record: nil, association_name: nil, authorization_context: nil, include_filter_cache: nil) @record = record @definition = definition || ResourceLoader.find_for_model(record.class) @base_definition = base_definition @parent_record = parent_record @association_name = association_name @authorization_context = @include_filter_cache = include_filter_cache @sti_subclass = nil end |
Class Method Details
.build_jsonapi_object ⇒ Object
28 29 30 31 32 |
# File 'lib/json_api/serialization/serializer.rb', line 28 def self.build_jsonapi_object obj = { version: JSONAPI_VERSION } obj[:meta] = JSONAPI.configuration. if JSONAPI.configuration. obj end |
.jsonapi_object ⇒ Object
24 25 26 |
# File 'lib/json_api/serialization/serializer.rb', line 24 def self.jsonapi_object @jsonapi_object ||= build_jsonapi_object.freeze end |
.reset_jsonapi_object! ⇒ Object
34 35 36 |
# File 'lib/json_api/serialization/serializer.rb', line 34 def self.reset_jsonapi_object! @jsonapi_object = nil end |
Instance Method Details
#serialize_record(fields = {}, requested_relationships: nil) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/json_api/serialization/serializer.rb', line 65 def serialize_record(fields = {}, requested_relationships: nil) { type: record_type, id: record_id, attributes: serialize_attributes(fields), relationships: serialize_relationships(requested_relationships), links: serialize_links, meta: , }.compact end |
#to_hash(include: [], fields: {}, document_meta: nil, include_context: nil) ⇒ Object
include_context shares one IncludeContext across a whole collection: a record reached from several primaries then serializes once instead of once per primary. Callers that pass it read the accumulated records from the context, not from each result's :included.
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/json_api/serialization/serializer.rb', line 54 def to_hash(include: [], fields: {}, document_meta: nil, include_context: nil) include_paths = normalize_include_paths(include) top_level_relationships = include_paths_to_relationship_names(include_paths, "") { jsonapi: jsonapi_object, data: serialize_record(fields, requested_relationships: top_level_relationships), included: serialize_included(include_paths, fields, context: include_context), meta: , }.compact end |