2009-06-09 11 views
5

Estoy usando la gema paperclip para adjuntar archivos a los modelos. Cuando carga un archivo con Paperclip, el archivo se guarda SÓLO cuando se guarda el modelo. Por lo tanto, si el modelo no es válido, el archivo cargado no se guarda. ¿Hay alguna manera de guardar temporalmente el archivo cargado, de modo que el usuario no tenga que cargar el mismo archivo si el modelo no es válido?Con la gema Rails Paperclip, cómo guardar temporalmente el archivo cargado si el modelo no es válido

Respuesta

2

definir un método before_save que comprueba si el objeto es válido, si no se guarde el archivo en el disco, darle un nombre único (crear un poco de hash)

poner esto en la forma que envíe de vuelta en un oculto campo

eliminar el campo Cargar en forma

Ahora, en la rama else del cheque before_save método si había una previous_upload hidden_field o como sea lo que sea Si hay carga la imagen y asignarla a la papercli atributo p, puede averiguar el resto

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

Gracias por la idea. Voy a tratar de salir :) – gsmendoza

Cuestiones relacionadas