আমি যা ব্যবহার করছি তা এখানে। টোকেনটি অনুমান করার জন্য অগত্যা শোনা উচিত নয়, এটি অন্য যে কোনও কিছুর চেয়ে শর্ট ইউআরএল সনাক্তকারীটির মতো এবং আমি এটিকে ছোট রাখতে চাই। আমি অনলাইনে পেয়েছি এমন কয়েকটি উদাহরণ অনুসরণ করেছি এবং সংঘর্ষের ঘটনায় আমি মনে করি নীচের কোডটি টোকেনটি পুনরায় তৈরি করবে, তবে আমি সত্যই নিশ্চিত নই। আমি আরও ভাল পরামর্শ দেখতে আগ্রহী, যদিও এটি প্রান্তের চারপাশে কিছুটা রুক্ষ বোধ করে।
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
মডেলটিও ব্যবহার করছি , তবে এগুলি অ্যাপ্লিকেশনটিতে কোনও ব্যবহারকারীর ক্রিয়াকলাপের ভিত্তিতে ব্যাচগুলিতে স্বয়ংক্রিয়ভাবে তৈরি করা হয়েছে (তারা একটি অর্ডার দেয় এবং মূলত টোকেনগুলি কিনে), এটি it's অ্যাপটিতে ত্রুটি ছুঁড়ে ফেলা সম্ভব নয়।
আমি অনুমান করতে পারি, সংঘর্ষের সম্ভাবনা হ্রাস করতে, শেষে অন্য একটি স্ট্রিং সংযোজন করতে হবে, সময় বা সেই জাতীয় কিছুটির উপর ভিত্তি করে তৈরি কিছু, তবে আমি টোকনটি বেশি দীর্ঘ পেতে চাই না।