Class: JSONAPI::Serializer

Inherits:
Object
  • Object
show all
Includes:
ActiveStorageSupport
Defined in:
lib/json_api/serialization/serializer.rb

Class Method Summary collapse

Instance Method Summary collapse

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?, #serialize_active_storage_relationship, #serialize_blob_identifier

Constructor Details

#initialize(record, definition: nil, base_definition: nil) ⇒ Serializer

Returns a new instance of Serializer.



14
15
16
17
18
19
# File 'lib/json_api/serialization/serializer.rb', line 14

def initialize(record, definition: nil, base_definition: nil)
  @record = record
  @definition = definition || ResourceLoader.find_for_model(record.class)
  @base_definition = base_definition
  @sti_subclass = nil # Cache for sti_subclass? check
end

Class Method Details

.jsonapi_objectObject

Class method for generating the JSON:API object



8
9
10
11
12
# File 'lib/json_api/serialization/serializer.rb', line 8

def self.jsonapi_object
  obj = { version: JSONAPI.configuration.jsonapi_version }
  obj[:meta] = JSONAPI.configuration.jsonapi_meta if JSONAPI.configuration.jsonapi_meta
  obj
end

Instance Method Details

#serialize_record(fields = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/json_api/serialization/serializer.rb', line 30

def serialize_record(fields = {})
  {
    type: record_type,
    id: record_id,
    attributes: serialize_attributes(fields),
    relationships: serialize_relationships,
    links: serialize_links,
    meta: record_meta
  }.compact
end

#to_hash(include: [], fields: {}, document_meta: nil) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/json_api/serialization/serializer.rb', line 21

def to_hash(include: [], fields: {}, document_meta: nil)
  {
    jsonapi: jsonapi_object,
    data: serialize_record(fields),
    included: serialize_included(include, fields),
    meta: document_meta
  }.compact
end