活动存储永久图像URL

时间:2018-12-20 13:41:46

标签: ruby-on-rails rails-activestorage

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

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

图像托管在S3存储桶中,因此我可以获得service_url。但是Google不喜欢将图片从单独的域发送到商店。有没有办法从stores域获得一个永久的干净URL?

3 个答案:

答案 0 :(得分:3)

我认为您追求的目标不容易实现。 Active Storage似乎不支持永久性的非过期URL:"Request has expired" when using S3 with Active Storage

取决于您的设置,可能会有一个有用的(主要是)无黑客的解决方法。就我而言,我在拥有要链接到的文件的记录上设置了自定义show操作:

redirect_to url_for(@record_name.file)

然后,像往常一样,在我的应用程序中使用路径助手进行记录show动作,只是通过即将到期的url_for呈现我想要的东西。

答案 1 :(得分:1)

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

FullName

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

上运行良好

答案 2 :(得分:0)

尝试rails_blob_url

rails_blob_url(image, disposition: "attachment")