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