有没有人知道是否有办法为特定附件配置自定义存储区?
class MyModel < ApplicationRecord
...
has_one_attached :logo, bucket: 'custom_bucket'
...
end
答案 0 :(得分:0)
没有,抱歉。 Active Storage设计用于单个存储桶。
答案 1 :(得分:0)
尽管无法使用特定的“存储桶”,但可以轻松地为多个存储桶添加多个活动存储配置(我相信v6.1中已引入):
https://edgeguides.rubyonrails.org/active_storage_overview.html#attaching-files-to-records
例如,您可能有一个“ amazon_s3_cold”和一个“ amazon_s3_hot”,除了存储桶外,它们将具有所有相同的配置。然后,您可以在AWS上相应地配置存储桶。
# config/storage.yml
amazon_s3_hot:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: us-east-1
bucket: my_hot_bucket
amazon_s3_cold:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
region: us-east-1
bucket: my_cold_bucket
# controllers
class User < ApplicationRecord
has_one_attached :avatar, service: :amazon_s3_hot
end
class DocumentRecord < ApplicationRecord
has_one_attached :document_upload, service: :amazon_s3_cold
end
注意-热/冷不适用于直接问题,但提供了一些上下文。热/冷存储是一种与云存储服务有关的概念,可以权衡访问频率的成本。