2013-05-04 9 views
8

में सहेजे जाने से पहले अस्थायी फ़ाइल खोलें एक बार जब आप कोई फ़ाइल अपलोड कर लेते हैं, तो मॉडल सहेजने से पहले उस फ़ाइल को खोलना संभव है?रेल मॉडल

मैं/सार्वजनिक फ़ोल्डर में फ़ाइलों को सहेजने के लिए पेपरक्लिप का उपयोग कर रहा हूं।

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

कैरियरवेव का मानना ​​है कि पेपरक्लिप भी हो सकता है .. – MikDiet

+0

@ मिकडिएट मैं वास्तव में कैरियरवेव का उपयोग कर समाप्त हुआ, इसमें इसके साथ बेहतर अनुभव है :) –

उत्तर

13

पाया यह:

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

अद्यतन:

ecoologic से प्रतिक्रिया के आधार पर .path बजाय पेपरक्लिप मणि

+1

हॉट डॉग! मुझे कुछ समय बचाया। मैं अपने मॉडल में after_post_process कॉलबैक का उपयोग कर रहा था और कॉलबैक में फ़ाइल को पढ़ने की कोशिश करते समय मुझे कोई फ़ाइल नहीं मिल रहा था। –

+0

इस मुद्दे को हल करने के लिए आपने क्या किया? – drmwndr

5

पर्याप्त बंद के नवीनतम संस्करण के लिए .url उपयोग करें, लेकिन .url मेरे लिए काम नहीं किया, path काम किया।

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

चाल चल रही थी।

संबंधित मुद्दे