使用paperclip / rails更改保存文件的路径

时间:2016-08-04 07:12:06

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

我正在制作Rails应用程序并使用paperclip将文件上传到AWS S3存储桶。 在我的模型中,我按以下方式配置:

 class File < ApplicationRecord
    has_attached_file :attachment,
                                :url => "/sample_pdf/:basename.:extension",
                                :path => "/sample_pdf/:basename.:extension"

    validates_attachment :attachment,
                                         :content_type => {
                                                 :content_type =>
                                                         ["application/pdf"]
                                         }
end

我遇到的问题是,有时我需要将文件上传到"/sample_pdf/:basename.:extension",有时我需要上传到其他路径,例如关注"/another_pdf_folder/:basename.:extension"

我不确定是否有办法更改存储文件的路径取决于我的需要。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过模型中的方法设置路径来动态设置路径。

class File < ApplicationRecord
    has_attached_file :attachment,
               :url => "/sample_pdf/:basename.:extension",
               :path => :attachment_dynamic_path,
               validates_attachment :attachment,
               :content_type => {
                                 :content_type =>  ["application/pdf"]
                                }
  def attachment_dynamic_path
    condition ? "/sample_pdf/:basename.:extension" : "/another_pdf_folder/:basename.:extension"
  end
end