class ActiveStorage::Blob

def compose(blobs, filename:, content_type: nil, metadata: nil)

Concatenate multiple blobs into a single "composed" blob.
def compose(blobs, filename:, content_type: nil, metadata: nil)
  raise ActiveRecord::RecordNotSaved, "All blobs must be persisted." if blobs.any?(&:new_record?)
  content_type ||= blobs.pluck(:content_type).compact.first
  new(filename: filename, content_type: content_type, metadata: metadata, byte_size: blobs.sum(&:byte_size)).tap do |combined_blob|
    combined_blob.compose(blobs.pluck(:key))
    combined_blob.save!
  end
end