रेल ऐप पर रूबी में मैं काम कर रहा हूं कि मैं उपयोगकर्ताओं को फाइल अपलोड करने की अनुमति देता हूं और इन फ़ाइलों को एक छोटा, यादृच्छिक अल्फान्यूमेरिक नाम देना चाहता हूं। (उदाहरण के लिए 'g7jf8' या '3bp76')। इसे करने का बेहतरीन तरीका क्या है?मैं रूबी में एक यादृच्छिक और अद्वितीय स्ट्रिंग कैसे उत्पन्न होगा?
मैं मूल फ़ाइल नाम और टाइमस्टैम्प से हैश/एन्क्रिप्टेड स्ट्रिंग उत्पन्न करने की सोच रहा हूं। फिर डेटाबेस को दोबारा जांचने के लिए पूछें कि यह अस्तित्व में नहीं है। यदि ऐसा होता है, तो दूसरा उत्पन्न करें और दोहराएं।
इस दृष्टिकोण के साथ मैं जो मुद्दा देखता हूं वह यह है कि यदि डुप्लिकेट तारों की उच्च संभावना है, तो यह डेटाबेस लोड का काफी हिस्सा जोड़ सकता है।
वहाँ भी संभावित (अगर असंभव) एक ही समय में एक ही नाम जोड़ने की कोशिश कर दो अनुरोधों की दौड़ शर्त है।डेटाबेस को उस कॉलम पर एक अनूठी बाधा होनी चाहिए और आपको 'ActiveRecord :: RecordNotUnique' पकड़ने के लिए तैयार होना चाहिए। – mpartel
जांचें http://stackoverflow.com/questions/5966910/generate-unique-random-string-with-letters-and-numbers-in-lower-case – sameera207
क्या "यादृच्छिक" नाम का सुरक्षा उद्देश्य है? यदि नहीं, तो आपके पास और विकल्प हैं। –