我很难找到通过神殿中的S3插件为公共静态资产生成url URL的正确方法。它的资产是用户化身,它可以是nil,所以我们的想法是使用插件default_url来获取空的化身图像。在文档之后,我来到这里:
class AvatarUploader < Shrine
plugin :default_url
Attacher.default_url do |options|
'/user_avatar.png'
end
end但这会生成一个相对URL。我也尝试过使用:host选项,就像这里指出的那样。但是,只有当我硬编码完整的端点URL时,它才能工作,这是不好的。
plugin :default_url, host: "https://my-public-bucket.s3.amazonaws.com"
attacher.url #=> "https://my-public-bucket.s3.amazonaws.com/user_avatar.png" 其他选项是,在环境变量中设置桶名:
plugin :default_url, host: "https://#{ENV["S3BUCKET_PUBLIC"]}.s3.amazonaws.com"但我觉得也不好。
是否有一种方法可以通过编程方式直接从神殿创建完整的URL,使用其现有的信任?
发布于 2022-06-23 18:30:24
要以编程方式创建使用选项散列调用文件所需的URL:
class AvatarUploader < Shrine
plugin :default_url
Attacher.default_url do |options|
data = { "id" => "user_avatar.png", "storage" => :bucket_name_from_config }
shrine_class.uploaded_file(data).url
end
endhttps://stackoverflow.com/questions/72734709
复制相似问题