ruby-on-rails-5 - Rails DirectUploadsController:覆盖#create 方法以添加自定义标头值
问题描述
我想知道是否可以覆盖调用私有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>
请求标头设置另一个键/值。任何想法?谢谢你。
解决方案
#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
推荐阅读
- php - PHP中服务器端的指纹比较
- elasticsearch - 在哪里放置 include_type_name 在 config.exs
- office-ui-fabric - 更改 DetailsList 的行高
- c++ - Visual Studio 2019 调试断言失败
- python - 在 Keras 中指定参数列表
- java - 如何实现 FlinkKafkaPartitioner?
- javascript - 在 React Native 组件中获取 Redux 存储数据
- r - 忽略 r 中因子变量的频率大小写
- ros - Ros:在ubuntu 18.04上安装ros melodic期间采购setup.bash的问题
- git - Azure Pipelines 签出的本地克隆和 repo 之间的 GitVersion 差异