2016-08-04 54 views
1

Ich mache Rails App und mit Büroklammer, um Dateien in AWS S3 Bucket hochzuladen. In meinem Modell, konfiguriere ich wie folgt:Ändern Sie den Pfad zum Speichern von Datei mit Büroklammer/Schienen

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 

Das Problem, das ich ist bin vor, dass manchmal muss ich die Datei laden "/sample_pdf/:basename.:extension" und manchmal brauche ich wie folgt "/another_pdf_folder/:basename.:extension" anderen Pfad zu laden.

Ich bin nicht sicher, ob es eine Möglichkeit gibt, den Pfad zu ändern, in dem ich die Datei speichern, hängt von meinen Bedürfnissen ab.

Danke.

Antwort

0

Sie können den Pfad dynamisch festlegen, indem Sie ihn über eine Methode im Modell festlegen.

+0

Ich bin nicht sehr vertraut mit Zustand. Welche Art von Aktion sollte ich für einen Weg wählen? Gibt es eine Möglichkeit, eine auszuwählen? – JoHksi

+0

Haben Sie keine Bedingung, aufgrund derer Sie Dateien in einem der Pfade speichern möchten? – titan

+0

So habe ich zwei andere verschiedene Modelle: ServiceA, ServiceB. Jedes Modell hat viele 'Datei', so dass ich mehrere Dateien unter jedem Dienst hochladen kann. Je nachdem, welchen Dienst ich verwende, sollte sich der Pfad ändern. Aber ich bin mir nicht sicher, wie ich überprüfen kann, auf welchen Dienst ich Dateien auf Modellebene 'Datei' hochlade. – JoHksi