在 Active storage Rails API 中获取图像的 heroku-app url 而不是 s3.amazonaws

Getting heroku-app url for images instead of s3.amazonaws in Active storage Rails API

我很难理解 rails 中活动存储的图像 url。 我正在使用 amazon s3 bucket 在 storage.yml 文件中使用正确配置上传生产中的图像。

当我运行url_for(User.user_image)时,它生成这个link:

http://my-heroku-app/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdVFCIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--1207b8339755bdc5391cb96548181a27dd9565fc/testing_image.jpg

而当我运行User.user_image.service_url时,生成的link是

https://my-app.s3.amazonaws.com/ySMyXZUWDnQGexvvNwKjZKpb......

我的图像是否存储在两个地方?一个是 Heroku-PostgreSQL,第二个是 aws-s3,或者它只是 aws-s3,我的图像正在存储并且活动存储以某种方式将它绑定到 s3 link.

实际上,我希望 url_for 中的 http://s3.amazonaws.com 到 API 响应中的 return。

应用程序行为: 我有 Rails API 应用程序,其中 images/videos 首先从前端并从那里将它们推送到 s3 存储桶。

您想要生成 url 的方式实际上是

rails_blob_url(User.find({id of user}).user_image)

就其工作原理而言,activestorage 仅持有一个指向文件所在位置的指针,并将在必要时重定向到 S3 存储桶。在 Heroku 上实际上不可能按照构建服务的方式在本地存储文件,需要某种外部存储容器。

Rails 链接部分的文档:https://edgeguides.rubyonrails.org/active_storage_overview.html#linking-to-files