यहाँ मैं उपयोग कर रहा हूँ। टोकन को जरूरी नहीं लगता है कि अनुमान लगाने के लिए सुना जाना चाहिए, यह कुछ और की तुलना में एक छोटे यूआरएल पहचानकर्ता की तरह है, और मैं इसे छोटा रखना चाहता हूं। मैंने कुछ उदाहरणों का अनुसरण किया है जिन्हें मैंने ऑनलाइन पाया है और एक टकराव की स्थिति में, मुझे लगता है कि नीचे दिए गए कोड टोकन को फिर से बनाएंगे, लेकिन मुझे यकीन है कि मैं निश्चित हूं। मैं बेहतर सुझावों को देखने के लिए उत्सुक हूं, हालांकि, यह किनारों के आसपास थोड़ा मोटा लगता है।
def self.create_token
random_number = SecureRandom.hex(3)
"1X#{random_number}"
while Tracker.find_by_token("1X#{random_number}") != nil
random_number = SecureRandom.hex(3)
"1X#{random_number}"
end
"1X#{random_number}"
end
टोकन के लिए मेरा डेटाबेस कॉलम एक अद्वितीय सूचकांक है और मैं validates_uniqueness_of :token
मॉडल पर भी उपयोग कर रहा हूं , लेकिन क्योंकि ये ऐप में उपयोगकर्ता के कार्यों के आधार पर स्वचालित रूप से बैचों में बनाए जाते हैं (वे एक आदेश देते हैं और टोकन खरीदते हैं, अनिवार्य रूप से), यह है एप्लिकेशन को एक त्रुटि फेंकने के लिए संभव नहीं है।
मैं यह भी अनुमान लगा सकता हूं, टकराव की संभावना को कम करने के लिए, अंत में एक और स्ट्रिंग को जोड़ दें, समय के आधार पर उत्पन्न कुछ या ऐसा कुछ, लेकिन मैं टोकन को बहुत लंबा नहीं करना चाहता।