有谁知道如何更改 disk_service.rb 以指定上传路径,例如:
my_path = Rails.root.join("public", "websites", "example.com", "users", current_user.id, "avatar")
current_user.avatar.attach(file, my_path)
这将导致将文件上传到此处:
/public/websites/example.com/users/12345/avatar/blah.png
然后我就可以:
rails_representation_path( current_user.avatar.variant(resize: "100x100"), disposition: 'attachment')
并返回路径:
/websites/example.com/users/12345/avatar/blah-100x100.png
这将允许摆脱围绕ActiveStorage公共/私有URL以及与CDN缓存相关的许多问题。
我正在玩 https://github.com/rails/rails/blob/master/activestorage/lib/active_storage/service/disk_service.rb 但无法弄清楚它的作用以及它是如何工作的。
在您的config/storage.yml
中,您应该有一个本地存储服务的配置块,您可以通过为 root 指定不同的路径来更改附件的存储位置。
local:
service: Disk
root: <%= Rails.root.join('storage') %>
我不认为你能够以你所描述的方式处理特定的图像。 ActiveRecord 为附加到模型的所有内容创建一个唯一键,并使用该键重命名文件。