2013-05-04 11 views
8

Po przesłaniu pliku możliwe jest otwarcie tego pliku przed zapisaniem modelu?Otwórz plik tymczasowy przed zapisaniem go w modelu Railsowym

Używam spinacza do zapisywania plików w folderze/public.

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 może, wierzę, że spinacz może też .. – MikDiet

+0

@MikDiet Tak naprawdę skończyło się na używaniu CarrierWave, mam lepsze doświadczenie z tym :) –

Odpowiedz

13

stwierdziła, że:

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

Aktualizacja:

Na podstawie odpowiedzi z ecoologic użyć .path zamiast .url dla nowszych wersji gem spinacza

+1

Hot dog! Zaoszczędził mi trochę czasu. Używałem callback after_post_process w moim modelu i otrzymywałem NO FILE FOUND, gdy próbowałem odczytać plik w wywołaniu zwrotnym. –

+0

Co zrobiłeś, aby rozwiązać ten problem? – drmwndr

5

wystarczająco blisko, ale .url nie działa dla mnie, path pracował.

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

załatwił sprawę.

Powiązane problemy