我如何不不断更改Active Storage附件URL?

时间:2018-11-02 16:15:30

标签: ruby-on-rails rails-activestorage

每次我检索ActiveStorage附件URL(使用object.attachment.service_url)都是一个新的URL。有没有一种方法可以始终使用相同的方法?

编辑

storage.yml文件

amazon:
  service: S3
  access_key_id: <%= ENV['AWS_KEY'] %>
  secret_access_key: <%= ENV['AWS_SECRET'] %>
  region: 'sa-east-1'
  bucket: 'production-bucket'

test:
  service: S3
  access_key_id: <%= ENV['AWS_KEY'] %>
  secret_access_key: <%= ENV['AWS_SECRET'] %>
  region: 'sa-east-1'
  bucket: 'staging-bucket'

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

1 个答案:

答案 0 :(得分:2)

也许这条线可以帮助您

Rails.application.routes.url_helpers.rails_blob_path(Object.attachement, only_path:true)

您可以将此方法添加到模型中

def attachment_url
    if self.attachment.attached?
      Rails.application.routes.url_helpers.rails_blob_path(self.attachement, only_path:true)
    else
      nil
    end
  end

并从任何地方调用它。

如果您的模型有很多附件

def attachment_url(item_attached)
    if item_attached.attached?
      Rails.application.routes.url_helpers.rails_blob_path(item_attached, only_path:true)
    else
      nil
    end
  end

Object.attachement_url(Object.image)