在我的Ruby on rails 6.1.3.2应用程序中,我尝试使用has_one_attached
service
选项将一个模型附件上传到单独的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
选项吗?
2条答案
按热度按时间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
是否正确填充(即不是错误的存储桶)yfjy0ee72#
您使用的是直接上传吗?如果是6.1 can't support direct uploads to multiple services,则需要升级到7.0。