在Rails中,如何使用FactoryGirl生成4位数ID?

时间:2013-11-21 04:29:08

标签: ruby-on-rails ruby ruby-on-rails-4 factory-bot

我需要使用工厂女孩生成一个4位数的唯一ID。我使用rand但它不起作用。它将生成一个随机数并将其分配给所有记录。我怎么能这样做?

以下是我使用rand方法的方法:

 nyaaid "NYAA/N/WP#{Random.rand(0002..9999)}"

4 个答案:

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