2014-10-19 2 views
1

Я видел несколько подходов к созданию уникальной буквенно-цифровой, но большинство подходов определяют определенную длину.Уникальные буквенно-цифровые символы между 5-11 символами в Rails

Что было бы хорошим способом получить уникальный буквенно-цифровой номер, связанный с моделью, длина которой должна быть от 5 до 11?

Я пытался с этим подходом:

Array.new(8){[*'0'..'9', *'a'..'z', *'A'..'Z'].sample}.join 

Но размер ограничен 8.

ответ

1

Вы можете изменить свой пример, используя ранд:

Array.new(rand(5..11)) { [*'0'..'9', *'a'..'z', *'A'..'Z'].sample }.join 

Также вы можете использовать SecureRandom, но он не может генерировать строку только с AZ, az, 0-9 символами. Возможно, вы можете выбрать любую другую последовательность. Я предпочитаю urlsafe_base64 или hex:

require 'securerandom' 

SecureRandom.urlsafe_base64(rand(5..11)) #result may contain A-Z, a-z, 0-9, “-” 
SecureRandom.hex(rand(5..11)) #result may contain 0-9 and a-f 

 Смежные вопросы

  • Нет связанных вопросов^_^