class JSONAPI::Serializer
def self.build_jsonapi_object
def self.build_jsonapi_object obj = { version: JSONAPI_VERSION } obj[:meta] = JSONAPI.configuration.jsonapi_meta if JSONAPI.configuration.jsonapi_meta obj end
def self.jsonapi_object
def self.jsonapi_object @jsonapi_object ||= build_jsonapi_object.freeze end
def self.reset_jsonapi_object!
def self.reset_jsonapi_object! @jsonapi_object = nil end
def base_definition
def base_definition @base_definition ||= definition end
def initialize(record, definition: nil, base_definition: nil, parent_record: nil, association_name: nil)
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
def jsonapi_object
def jsonapi_object self.class.jsonapi_object end
def record_id
def record_id record.id.to_s end
def record_type
def record_type if definition.name.end_with?("Resource") RelationshipHelpers.resource_type_name(definition) else record.class.name.underscore.pluralize end end
def serialize_record(fields = {}, requested_relationships: nil)
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: record_meta, }.compact end
def to_hash(include: [], fields: {}, document_meta: nil)
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: document_meta, }.compact end