Activestorage:获取 S3 密钥(不是 Rails blob 密钥)

oka*_*56k 2 ruby-on-rails amazon-s3 ruby-on-rails-5 rails-activestorage

我正在使用 Activestorage。我想检索 S3 密钥以移交给微服务。我不想在 Rails 应用程序中下载 blob 或类似的东西,我只想在 API 请求中提供文件路径/密钥。

service_url 有点矫枉过正,因为我已经可以访问微服务中的存储桶,更不用说这些是大文件,我不需要不必要地传输它们的事实。

我有哪些选择?

Luk*_*bel 5

使用service_url不仅是矫枉过正,而且如果您尝试在 ActiveStorage 控制器之外使用它,也会遇到问题,如此处所述

更好的是ActiveStorage#键,这对于S3将返回刚才的S3关键是你的对象。它仍然不是您应该用于公共价值的东西 -ActiveStorage#signed_id为您提供了荒谬的钥匙。但是,如果您想要原始 S3 密钥(就像我为服务 API 所做的那样),则key可以工作并且不会在控制器之外抱怨。

所以在你的情况下:

def logo_key_on_s3
  logo.key
end
Run Code Online (Sandbox Code Playgroud)

应该管用。