उत्पन्न करें मुझे अपनी फ़ाइलों के लिए अद्वितीय फ़ाइल नामों की आवश्यकता है।अद्वितीय फ़ाइल नाम
def filename
"#{SecureRandom.urlsafe_base64}.gif"
end
यह इस जैसे एक फ़ाइल सहेजता है:
ylGP48WxZXOY2OQ_x9dxAA.gif
तथापि डेटाबेस में अपने संबंधित क्षेत्र इस तरह बचाया जा:
jED48PRNz0asZzwYQXzecw.gif
मुझे लगता है कि क्या हो रहा है Carrierwave है file_name
फ़ंक्शन को फ़ाइल लिखते समय और जब यह डेटाबेस में उदाहरण सहेजता है, जिसके परिणामस्वरूप urlsafe_base64 को दो बार बुलाया जाता है और दो अलग-अलग तार बनाते हैं । यह पूरी तरह से काम करता है जब मैंने एक परीक्षण के रूप में नाम हार्डकोड किया है।
तो यह कैसे रोक सकता है? मुझे पता है कि यह पूछना अपमानजनक है, लेकिन मैं कैरियरवेव डेटाबेस में वही यादृच्छिक रूप से जेनरेट किए गए फ़ाइल नाम का उपयोग कैसे कर सकता हूं और फ़ाइल लिखते समय? मुझे गंभीरता से लगता है कि इसे एक बग माना जाना चाहिए।
def filename
random_string
end
protected
def random_string
@string ||= "#{SecureRandom.urlsafe_base64}.gif"
end
मैं मानता हूँ carrierwave एक एक बालक अधिक सहज ज्ञान युक्त हो सकता है:
जब तुम सिर्फ एक अद्वितीय फ़ाइल नाम चाहते हैं, तुम क्यों 'अपने फ़ाइल नाम के रूप में YYYYMMddHHmmss.gif' विचार करने के लिए कोशिश मत करो ..? –
निश्चित रूप से एक विकल्प। मेरी इच्छा है कि वाहकवेव लगातार मेरे पैर की उंगलियों पर कदम नहीं उठाएगा ... यह अच्छा है लेकिन यह इतना बेहतर हो सकता है। – user3067865