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) ⇒ Serializer
constructor
A new instance of Serializer.
- #serialize_record(fields = {}, requested_relationships: nil) ⇒ Object
- #to_hash(include: [], fields: {}, document_meta: nil) ⇒ Object
Methods included from JSONAPI::Serialization::MetaSerialization
Methods included from JSONAPI::Serialization::IncludesSerialization
#build_include_context, #serialize_included
Methods included from JSONAPI::Serialization::IncludeFiltering
#filter_by_query, #filter_by_where_hash, #filter_loaded_records, #record_matches_where_hash?, #where_values_hash_for_scope
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) ⇒ Serializer
Returns a new instance of Serializer.
37 38 39 40 41 42 43 44 |
# File 'lib/json_api/serialization/serializer.rb', line 37 def initialize(record, definition: nil, base_definition: nil, parent_record: nil, association_name: nil) @record = record @definition = definition || ResourceLoader.find_for_model(record.class) @base_definition = base_definition @parent_record = parent_record @association_name = association_name @sti_subclass = nil end |
Class Method Details
.build_jsonapi_object ⇒ Object
27 28 29 30 31 |
# File 'lib/json_api/serialization/serializer.rb', line 27 def self.build_jsonapi_object obj = { version: JSONAPI_VERSION } obj[:meta] = JSONAPI.configuration. if JSONAPI.configuration. obj end |
.jsonapi_object ⇒ Object
23 24 25 |
# File 'lib/json_api/serialization/serializer.rb', line 23 def self.jsonapi_object @jsonapi_object ||= build_jsonapi_object.freeze end |
.reset_jsonapi_object! ⇒ Object
33 34 35 |
# File 'lib/json_api/serialization/serializer.rb', line 33 def self.reset_jsonapi_object! @jsonapi_object = nil end |
Instance Method Details
#serialize_record(fields = {}, requested_relationships: nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/json_api/serialization/serializer.rb', line 57 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) ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/json_api/serialization/serializer.rb', line 46 def to_hash(include: [], fields: {}, document_meta: 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), meta: , }.compact end |