Rails 3:生成唯一代码(优惠券)

don*_*ald 16 ruby rubygems ruby-on-rails ruby-on-rails-3

生成用作优惠券代码的唯一代码的最佳方法是什么?

谢谢.

Rya*_*igg 37

在Ruby的标准库中有SecureRandom这样的:

SecureRandom.hex(3)
Run Code Online (Sandbox Code Playgroud)

输出的长度是指定长度输入的两倍.


zsa*_*ank 7

你想要的是生成一个GUID.看这里:

红宝石中的guid发生器

  • 所以这就是GUID - 只是从生成的字符串中删除`-` (2认同)

zsa*_*ank 3

你也可以做这样的事情:

chars = ('a'..'z').to_a + ('A'..'Z').to_a
def String.random_alphanumeric(size=16)
    (0...size).collect { chars[Kernel.rand(chars.length)] }.join
end
Run Code Online (Sandbox Code Playgroud)

但随后您必须与数据库进行比较,以确保它尚未被使用。

  • 为此,您应该使用“ActiveSupport::SecureRandom”,而不是编写自己的功能。 (11认同)