我已经看到了几种生成唯一字母数字的方法,但大多数方法都指定了特定的长度。
获得与长度必须介于5到11之间的模型相关联的唯一字母数字的好方法是什么?
我正在尝试这种方法:
Array.new(8){[*'0'..'9', *'a'..'z', *'A'..'Z'].sample}.join
但是大小限制为8.
答案 0 :(得分:1)
您可以使用rand修改您的示例:
Array.new(rand(5..11)) { [*'0'..'9', *'a'..'z', *'A'..'Z'].sample }.join
此外,您可以使用SecureRandom,但它不能生成仅包含A-Z,a-z,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