从S3检索文件。 - Carrierwave Rails Gem

时间:2017-03-25 21:16:21

标签: ruby-on-rails ruby amazon-s3 carrierwave

我将带有雾存储的Carrierwave实施到我的Rails应用程序中。此应用程序的整个目的是存储pdf文章,并且能够让有权访问该应用程序的任何人检索它们。现在,我具有存储文章pdf工作的功能。但是,现在我需要能够从S3检索pdf。这可能吗?我在文档中注意到有uploader.retrieve_from_store!("my_file.png")方法。我试图在控制台中运行它,我收到此错误NoMethodError: undefined method retrieve_from_store! for ArticleUploader:Class任何帮助都会很棒!到目前为止,我还没有找到合适的答案。谢谢!

文章上传者

class ArticleUploader < CarrierWave::Uploader::Base

  storage :fog

  def extension_whitelist
    %w(jpg jpeg gif png pdf)
  end

end

文章模型

class Article < ApplicationRecord
  mount_uploader :file, ArticleUploader
  validates :title, presence: :true
  validates :publication_date, presence: :true
  validates :source, presence: :true
end

1 个答案:

答案 0 :(得分:1)

您可以使用carrierwave具有的方法访问它,在您的情况下:

article = Article.find(1)
article.file.url

如果您正在开发,它将输出file的路径,如果您正在制作并使用S3,它将输出整个网址,例如http://s3.amazonaws.com/<vendor>/articles/1/file.pdf

您可以在官方文档中找到更多信息:

https://github.com/carrierwaveuploader/carrierwave#activerecord

http://railscasts.com/episodes/253-carrierwave-file-uploads

还有一个旧的铁轨