我可以将 Shrine 上传凭证添加到模型吗

Can I add Shrine upload credentials to the model

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

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

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

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

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")
}

注意:这不是所有存储代码 - :cache: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)

见神社随从doc page and source code