Rails中5-11个字符之间的唯一字母数字

时间:2014-10-19 22:08:26

标签: ruby-on-rails alphanumeric

我已经看到了几种生成唯一字母数字的方法,但大多数方法都指定了特定的长度。

获得与长度必须介于5到11之间的模型相关联的唯一字母数字的好方法是什么?

我正在尝试这种方法:

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

但是大小限制为8.

1 个答案:

答案 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