Rails DirectUploadsController: переопределить метод #create для добавления пользовательских значений заголовков - PullRequest
0 голосов
/ 30 января 2020

Интересно, можно ли переопределить DirectUploadsController#create метод, который вызывает приватный direct_upload_json метод:

class ActiveStorage::DirectUploadsController < ActiveStorage::BaseController
  def create
    blob = ActiveStorage::Blob.create_before_direct_upload!(blob_args)
    render json: direct_upload_json(blob)
  end

private
...
def direct_upload_json(blob)
  blob.as_json(root: false, methods: :signed_id).merge(direct_upload: {
    url: blob.service_url_for_direct_upload,
    headers: blob.service_headers_for_direct_upload
  })
end

Мне также нужно установить Authorization Bearer <token> другой ключ / значение в заголовке запроса. Есть идеи? Спасибо.

1 Ответ

0 голосов
/ 05 февраля 2020
#config/routes.rb

Rails.application.routes.draw do
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
  post '/rails/active_storage/direct_uploads', to: 'image_uploads#create'
end

переопределить ваш DirectUploadsController

#app/controllerss/image_uploads_controler.rb  
class ImageUploadsController < ActiveStorage::DirectUploadsController

  def create
    super
  end

  private

  def direct_upload_json(blob)
    headers = blob.service_headers_for_direct_upload
    headers[:custom_header] = "TEST HEADER"
    blob.as_json(root: false, methods: :signed_id).merge(direct_upload: {
      url: blob.service_url_for_direct_upload,
      headers: headers
    })
  end
end
...