我正在使用 Activestorage。我想检索 S3 key 以移交给微服务。我不想在 Rails 应用程序中下载 blob 或类似的东西,我只想在 API 请求中提供文件路径/ key 。
service_url
太过分了,因为我已经可以访问微服务中的存储桶,更不用说这些都是大文件,我不需要不必要地传输它们。
我有哪些选择?
最佳答案
使用 service_url
不仅矫枉过正,如果您尝试在 ActiveStorage Controller 之外使用它还会遇到问题,as described here .
更好的是ActiveStorage#key ,对于 S3,它将仅返回对象的 S3 key 。它仍然不是您应该用于公共(public)值的东西 - ActiveStorage#signed_id
为您提供了 railsy key 。但是如果你想要原始的 S3 key (就像我对服务 API 所做的那样),key
可以工作并且不会在 Controller 之外提示。
所以在你的情况下:
def logo_key_on_s3
logo.key
end
应该可以。
关于ruby-on-rails - 事件存储 : get S3 key (not Rails blob key),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56123052/