将活动存储表示添加到邮件程序的最佳方法是什么?

问题描述

我想在邮件程序中使用 active_storage 表示。

rails_blob_path(@post.photos.first.img).variant(resize: "300x300") 不起作用,所有通过 rails_blob_path(@post.photos.first.img) 生成链接都会在 5 分钟后过期。

有没有办法生成永久的长期存在的网址?

Rails.application.routes.url_helpers.rails_blob_url(@post.photos.first.img.variant(resize: "300x300"),only_path: true)

Return NoMethodError: undefined method `signed_id'

解决方法

Rails 6.1 引入了对公共存储的支持。例如:

s3_public:
  service: S3
  access_key_id: <%= Rails.application.credentials.dig(:s3,:access_key_id) %>
  secret_access_key: <%= Rails.application.credentials.dig(:s3,:secret_access_key) %>
  bucket: bucket_name
  public: true

您可以在每个附件的基础上设置存储服务,以防您不希望所有内容都公开:

has_one_attached :pdf,service: :s3_public