设置动态存储磁盘服务上载路径



有谁知道如何更改 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 为附加到模型的所有内容创建一个唯一键,并使用该键重命名文件。

最新更新