Module: JSONAPI::ActiveStorage::Serialization

Defined in:
lib/json_api/active_storage/serialization.rb

Class Method Summary collapse

Class Method Details

.empty_attachment_value(attachment) ⇒ Object



25
26
27
# File 'lib/json_api/active_storage/serialization.rb', line 25

def empty_attachment_value(attachment)
  attachment.is_a?(::ActiveStorage::Attached::Many) ? [] : nil
end

.serialize_attached(attachment) ⇒ Object



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

def serialize_attached(attachment)
  if attachment.is_a?(::ActiveStorage::Attached::Many)
    return attachment.blobs.map { |blob| serialize_blob_identifier(blob) }
  end

  serialize_blob_identifier(attachment.blob)
end

.serialize_blob_identifier(blob) ⇒ Object



29
30
31
# File 'lib/json_api/active_storage/serialization.rb', line 29

def serialize_blob_identifier(blob)
  { type: "active_storage_blobs", id: blob.id.to_s }
end

.serialize_relationship(attachment_name, record) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/json_api/active_storage/serialization.rb', line 8

def serialize_relationship(attachment_name, record)
  return nil unless defined?(::ActiveStorage)

  attachment = record.public_send(attachment_name)
  return nil unless attachment.respond_to?(:attached?)

  attachment.attached? ? serialize_attached(attachment) : empty_attachment_value(attachment)
end