2016-08-04 5 views
1

私は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"を次のように他のパスにアップロードする必要があるということです。

ファイルを保存する場所を変更する方法が必要かどうかはわかりません。

ありがとうございました。

答えて

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

私は非常に状態に精通していません。どちらの方向に進むべきですか? 1つを選択する方法はありますか? – JoHksi

+0

どちらのパスにもファイルを保存したいという条件はありませんか? – titan

+0

他の2つのモデル、ServiceA、ServiceBという2つのモデルがあります。各モデルには多くの 'File'がありますので、各サービスの下に複数のファイルをアップロードできます。私が使用しているサービスによって、パスが変更されるはずです。しかし、私は 'File'モデルレベルでファイルをアップロードするサービスをチェックする方法がわかりません。 – JoHksi

関連する問題