ruby-on-rails - 使用多个 Rails ActiveStorage 服务

标签 ruby-on-rails amazon-s3 rails-activestorage shrine

我正在使用 ActiveStorage 上传 PDF 和图像。由于一些隐私问题,PDF 需要在本地存储,而图像需要使用 Amazon S3 存储。但是,看起来 ActiveStorage 只支持为每个环境设置一种服务类型(除非您使用镜像功能,在这种情况下它不能满足我的需要)。

有没有办法在同一环境中使用不同的服务配置?例如,如果一个模型 has_one_attached pdf它使用本地服务:

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

如果另一个模型 has_one_attached image它使用亚马逊服务:
amazon:
  service: S3
  access_key_id: ""
  secret_access_key: ""

最佳答案

Rails 6.1 现在支持这个。
根据 this article ,您可以指定 service用于每个 attached :

class MyModel < ApplicationRecord
  has_one_attached :private_document, service: :disk
  has_one_attached :public_document,  service: :s3
end

关于ruby-on-rails - 使用多个 Rails ActiveStorage 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418255/

相关文章:

ruby-on-rails - rails 3 : Passenger can't find git gems installed by bundler

ruby-on-rails - ImageMagickError 无法读取字体 `(null)' : `(null)'

ruby-on-rails - ruby 压缩包 : Unable to find path of file stored in Active Storage

ruby-on-rails - ActiveStorage : record returns attached? 为真,但 blob 为零。如何删除 "ghost"附件?这怎么发生的?

ruby-on-rails - 如何使 ruby​​ 数组成为 ActiveRecord 准备语句中的 x、y、z

ruby-on-rails - rails 错误: Can't mass-assign protected attributes

amazon-web-services - 如何使用 AWS CLI 在 Redshift 数据库上运行查询

java - AWS Lambda 和 S3 - 上传的 pdf 文件为空白

ios - 如何将 AWS 联合 token 与 AWS iOS SDK 2.0 一起使用

ruby-on-rails - 获取 ActiveStorage 图像的完整 URL