# Duplicated from ActiveStorage::DirectUploadsController # https://github.com/rails/rails/blob/v6.0.0/activestorage/app/controllers/active_storage/direct_uploads_controller.rb class Api::DirectUploadsController < Api::ApiController include ActiveStorage::SetCurrent def create blob = ActiveStorage::Blob.create_before_direct_upload!(blob_args) render jsonapi: DirectUpload.new(blob) end private def blob_args params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, :metadata).to_h.symbolize_keys end class SerializableDirectUpload < JSONAPI::Serializable::Resource type 'direct_upload' attributes :id, :key, :signed_id, :url, :headers end class DirectUpload delegate :id, :key, :signed_id, to: :blob attr_reader :blob def initialize(blob) @blob = blob end def url blob.service_url_for_direct_upload end def headers blob.service_headers_for_direct_upload end end end