我需要使用工厂女孩生成一个4位数的唯一ID。我使用rand
但它不起作用。它将生成一个随机数并将其分配给所有记录。我怎么能这样做?
以下是我使用rand方法的方法:
nyaaid "NYAA/N/WP#{Random.rand(0002..9999)}"
答案 0 :(得分:3)
另一种方法是使用String#%
将随机数填零到四位数:
'%04d' % Random.rand(2..9999)
PS:0002
并不代表你认为它的作用。前导零表示该数字为八进制(查看0010
中的irb
,您将看到8
,而不是10
)。你很幸运,因为2是八进制和十进制的2,但你真的应该使用2..9999
来避免混淆。
答案 1 :(得分:2)
如果我正确理解您的问题,以下代码可以正常工作。
[1,1,1,1].map!{|x| (0..9).to_a.sample}.join
答案 2 :(得分:1)
您需要将其包装在{}
中nyaaid { "NYAA/N/WP#{Random.rand(0002..9999)}" }
答案 3 :(得分:0)
FactoryGirl专门针对这种情况编写序列:
sequence(:nyaaid) { |n| sprintf("NYAA/N/WP%04d", n) }