2013-05-04 5 views
8

Sobald Sie eine Datei hochgeladen haben, ist es möglich, diese Datei zu öffnen, bevor das Modell gespeichert wird?Öffnen Sie die temporäre Datei vor dem Speichern in Rails Modell

Ich benutze Paperclip, um Dateien im Ordner/public zu speichern.

class Book < ActiveRecord::Base 
    before_save :open_it 
    has_attached_file :upload 

    def open_it 
    a_file = open(upload.url) # this doesn't work before save ? 
    # ... 
    end 
end 
+2

Carrierwave kann, glaube Büroklammer kann auch .. – MikDiet

+0

@MikDiet Ich endete tatsächlich mit CarrierWave, habe eine bessere Erfahrung damit :) –

Antwort

13

fand es:

def model_method 
    f = open(self.upload.queued_for_write[:original].url) 
end 

Update:

Basierend auf Antwort von ecoologic, .path statt .url für neuere Versionen des gem Büroklammer verwenden

+1

Hot Dog! Rettete mich einige Zeit. Ich habe in meinem Modell den after_post_process Callback verwendet, und ich habe NO FILE FOUND erhalten, als ich versuchte, die Datei im Callback zu lesen. –

+0

Was haben Sie getan, um dieses Problem zu lösen? – drmwndr

5

Nahe genug, aber .url hat bei mir nicht funktioniert, path hat funktioniert.

file = open(uploaded.queued_for_write[:original].path) 

haben den Trick gemacht.