2009-06-09 7 views
5

मैं पेपरक्लिप मणि का उपयोग मॉडलों को फाइल संलग्न करने के लिए कर रहा हूं। जब आप पेपरक्लिप का उपयोग करके फ़ाइल अपलोड करते हैं, तो फ़ाइल सहेजी जाती है जब फ़ाइल सहेजी जाती है। इस प्रकार, यदि मॉडल अमान्य है, तो अपलोड की गई फ़ाइल सहेजी नहीं गई है। क्या अपलोड की गई फ़ाइल को अस्थायी रूप से सहेजने का कोई तरीका है, ताकि मॉडल को अमान्य होने पर उपयोगकर्ता को एक ही फ़ाइल अपलोड करने की आवश्यकता न हो?रेल पेपरक्लिप मणि के साथ, मॉडल अमान्य होने पर अपलोड की गई फ़ाइल को अस्थायी रूप से सहेजने के लिए कैसे करें

उत्तर

2

अगर डिस्क पर फ़ाइल नहीं बचा एक before_save विधि अगर वस्तु मान्य है की जाँच करता है कि, को परिभाषित करें, यह एक अनन्य नाम देना (बनाने के कुछ हैश)

रखो उस रूप में आप एक छिपा में वापस भेज क्षेत्र

before_save विधि की जांच की और कुछ शाखा में

अब के रूप में अपलोड फ़ील्ड को हटाएं अगर वहाँ एक hidden_field previous_upload था या फिर भी आप इसे नाम यदि वहाँ चित्र लोड और papercli के लिए असाइन करें पी विशेषता, यह शेष

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

इस विचार के लिए धन्यवाद। मैं इसे आज़माउंगा :) – gsmendoza

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