2016-08-04 108 views
1

我在制作Rails应用程序并使用回形针将文件上传到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"

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

感谢。

回答

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 
+0

我对条件不是很熟悉。我应该采取哪一种行动?有没有办法选择一个? – JoHksi

+0

你没有任何条件的基础上,你想保存文件的任何路径? – titan

+0

所以我有两个不同的模型:ServiceA,ServiceB。每个模型都有很多'File',所以我可以在每个服务下上传多个文件。取决于我使用的服务,路径应该改变。但我不确定如何检查我将文件上传到“文件”模型级别的服务。 – JoHksi