活动存储永久映像 URL

Active Storage Permanent Image URL

我正在 Rails 上为 Ruby 内置的网站创建 google 产品列表。该网站有多个商店,每个商店都有自己的前端,因此他们希望每个商店都有一个 Google 产品 Feed。

我遇到的问题是,如果我使用 url_for(image),那么我会在该商店获得图像的 URL。但主动存储的工作方式是在默认情况下持续 5 分钟的临时 URL。因此,这些链接在 Feed 上无法正常工作,因为它已经过处理。

图像托管在 S3 存储桶上,因此我可以获得 service_url。但是 Google 不喜欢将图像从单独的域传送到商店。有没有办法从 stores 域中永久清除 url?

尝试rails_blob_url

rails_blob_url(image, disposition: "attachment")

更新: Link 已更新。

我认为你所追求的东西并不容易实现。 Active Storage 似乎不支持永久的、不过期的 URL:"Request has expired" when using S3 with Active Storage

根据您的设置,可能有一个有用且(大部分)无黑客攻击的解决方法。就我而言,我在拥有我想要 link 的文件的记录上设置了一个自定义 show 操作:

redirect_to url_for(@record_name.file)

然后,像往常一样,在我的应用程序中使用路径帮助程序记录 show 操作,只是通过即将到期的 url_for.

呈现我想要的东西

您可以使用以下方法获取完整的 URL Active Storage 附件:

polymorphic_url(@article.image.variant(resize: '800x600'))

这将提供完整的 url 而不仅仅是路径,并且在 Rails 5.2+

上运行良好