6

我们能否将创建的默认“永久”url 从活动存储更改为重定向到 S3。类似于 rails/active_storage/representations/. 我不喜欢 url 中的框架名称。

谢谢

4

1 回答 1

8

更新:最近,有一个添加可以在 Rails 6 中配置路由前缀:https ://guides.rubyonrails.org/6_0_release_notes.html#active-storage-notable-changes

这只是一个配置问题:

Rails.application.configure do
  config.active_storage.routes_prefix = '/whereever'
end

不幸的是,该 url 是在 ActiveStorage routes.rb中定义的,没有简单的方法可以更改:

get "/rails/active_storage/blobs/:signed_id/*filename" => 
     "active_storage/blobs#show", as: :rails_service_blob
get "/rails/active_storage/representations/:signed_blob_id/:variation_key/*filename" => 
     "active_storage/representations#show", as: :rails_blob_representation

我能想到的一个解决方案起点是另外定义自己的路线并覆盖“rails_blob_representation_path”或类似的

get "/my_uploads/:signed_blob_id/:variation_key/*filename" => 
  "active_storage/representations#show", as: :my_upload

然后覆盖帮助文件中的路径并将帮助程序包含到命名帮助程序中:

如何覆盖rails中的路由路径助手?

module CustomUrlHelper
  def rails_blob_representation(*args)
    my_upload(*args)
  end
end

# initializer etc.
Rails.application.routes.named_routes.url_helpers_module.send(:include, CustomUrlHelper)

该解决方案可能需要一些调整,但我没有测试它。

于 2018-05-02T11:16:00.300 回答