2009-06-09 5 views
5

Ich benutze die Büroklammer Juwel, um Dateien an Modelle anzuhängen. Wenn Sie eine Datei mit Paperclip hochladen, wird die Datei NUR gespeichert, wenn das Modell gespeichert wird. Wenn das Modell ungültig ist, wird die hochgeladene Datei daher nicht gespeichert. Gibt es eine Möglichkeit, die hochgeladene Datei vorübergehend zu speichern, sodass der Benutzer die gleiche Datei nicht hochladen muss, wenn das Modell ungültig ist?Mit Rails Paperclip gem, wie Sie die hochgeladene Datei vorübergehend speichern, wenn das Modell ungültig ist

Antwort

2

definieren before_save Methode, die überprüft, ob das Objekt gültig ist, wenn die Datei nicht auf der Festplatte speichern, geben Sie ihm einen eindeutigen Namen (erstellen einige Hash)

Setzen Sie, dass Sie in der Form, in einer versteckten zurückschicken

Feld

löscht Upload-Feld in Form

Jetzt im else-Zweig der Prüfung before_save Methode, wenn es ein hidden_field previous_upload war oder wie man es nennen wenn das Bild laden und sie die papercli zuweisen p Attribut, kann es den Rest herausfinden

attr_accessor :previous_upload 

def before_save 
    if valid? 
    if previous_upload 
     paperclip_file = #Load paperclip_file from /tmp 
    else 
     previous_upload = nil 
    end 
    else 
    previous_upload = "Some unique key for each upload like ip and time or such" 
    # Save paperclip_file with name previous_upload to /tmp 
    end 
end 
+0

Danke für die Idee. Ich werde es ausprobieren :) – gsmendoza

Verwandte Themen