0

我有一个基于 Rails 5 的多租户站点,每个租户都添加了自己的 s3 凭据,因此,在其租户站点上发生的任何上传都会上传到他们自己的 s3 帐户。

我目前遇到的问题是 Shrine 似乎只允许我在初始化程序中添加 s3 凭据。这很好用,但我想将它添加到模型中,以便我可以根据当时使用的租户动态填充 s3 凭据。有谁知道无论如何神社可以帮助我吗?

我设法用回形针做到了这一点,但它带来了其他问题,例如后台处理等。

4

1 回答 1

0

您可以在初始化程序中定义所有存储:

Shrine.storages = {
  first_storage: Shrine::Storage::S3.new(
  bucket: "my-first-bucket", # required 
  region: "eu-west-1", # required 
  access_key_id: "abc",
  secret_access_key: "xyz"),

  second_storage: Shrine::Storage::S3.new(
  bucket: "my-second-bucket", # required 
  region: "eu-east-1", # required 
  access_key_id: "efg",
  secret_access_key: "uvw")
}

注意:这不是所有的 storages 代码——应该定义the:cache和storages 。:store

然后在模型中使用它们:

class Photo
  include ImageUploader::Attachment(:image)
end

photo = Photo.new
photo.image_attacher.upload(io, :first_storage)
photo.image_attacher.upload(other_io, :second_storage)

请参阅 Shrine attacher 的文档页面源代码

于 2020-01-03T08:39:13.203 回答