我很难理解Rails中活动存储的图像URL。我正在使用Amazon S3存储桶在storage.yml文件中以正确配置上传生产中的图像。
当我运行url_for(User.user_image)时,它会生成此链接:
并且当我运行User.user_image.service_url时,生成的链接为
https://my-app.s3.amazonaws.com/ySMyXZUWDnQGexvvNwKjZKpb ......
我的图像是否存储在2个地方?一个是Heroku-PostgreSQL,第二个是aws-s3或仅仅是aws-s3,用于存储我的图像,而活动存储以某种方式将其绑定到s3链接。
实际上,我希望url_for中的http://s3.amazonaws.com在API响应中返回它。
[应用程序行为:我有Rails API应用程序,其中图像/视频首先从前端来到Rails应用程序,然后从那里被推到s3存储桶。
您实际上想要生成URL的方式是
rails_blob_url(User.find({id of user}).user_image)
就其工作方式而言,activestorage只是持有一个指向文件所在位置的指针,并将在必要时重定向到S3存储桶。在Heroku上,实际上不可能以服务的构造方式在本地存储文件,需要某种外部存储容器。
链接部分的文档:https://edgeguides.rubyonrails.org/active_storage_overview.html#linking-to-files