ruby-on-rails - 事件存储 : get S3 key (not Rails blob key)

标签 ruby-on-rails amazon-s3 ruby-on-rails-5 rails-activestorage

我正在使用 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/

相关文章:

mysql - 毫秒转换并获取年份

ruby-on-rails - 将实例变量从 Controller 移出到服务类

ruby - 抽佣 Assets :precompile failed when push rails5 app to heroku

ruby-on-rails - 为什么在Rails3.2.9 中不调用validate 函数?

ruby-on-rails - OpsWorks - 自定义 Recipe 中应包含哪些内容

python - 在 Python 中将文件上传到 AWS S3 存储桶文件夹导致正则表达式错误

javascript - 用于社交网络的 Amazon S3?

mysql - ruby on Rails 的 mysql 问题

ruby-on-rails - Grails hasMany并属于与RoR的比较

具有远程 (AWS S3) 目标的 Makefile