ActiveStorage-HAS_ONE_ATTACHED忽略服务选项

soat7uwm  于 2022-10-15  发布在  Ruby
关注(0)|答案(2)|浏览(123)

在我的Ruby on rails 6.1.3.2应用程序中,我尝试使用has_one_attachedservice选项将一个模型附件上传到单独的S3存储桶中。下面是我的storage.yml的样子:

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

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

amazon:
  service: S3
  access_key_id: <%= ENV['AWS_ACCESS_KEY_I'] %>
  secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
  region: us-east-2
  bucket: <%= ENV['AWS_BUCKET'] %>

amazon_logos_images:
  service: S3
  access_key_id: <%= ENV['AWS_ACCESS_KEY_I'] %>
  secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %>
  region: us-east-2
  bucket: <%= ENV['AWS_LOGOS_BUCKET'] %>

在我的production.rb中,我有以下活动存储配置:

config.active_storage.service = :amazon

我的徽标模型如下所示:

class Logo < ApplicationRecord
  has_one_attached :image, service: :amazon_logos_images
end

不幸的是,当我创建新的Logo记录时,图像被上载到amazon存储桶,而不是amazon_logos_images。您知道为什么has_one_attached方法会忽略service选项吗?

cidc1ykv

cidc1ykv1#

如果你来自6.0:
如果我们的项目已经在使用active Storage,并且当我们升级到rails 6.1时,我们应该运行rake app:update以确保将SERVICE_NAME列添加到内部ActiveStorageBlob模型中。
https://blog.saeloun.com/2020/02/03/rails-allows-configure-service-for-attachments-to-activestorage.html
否则,检查AWS_LOGOS_BUCKET是否正确填充(即不是错误的存储桶)

yfjy0ee7

yfjy0ee72#

您使用的是直接上传吗?如果是6.1 can't support direct uploads to multiple services,则需要升级到7.0

相关问题