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

问题描述 投票:0回答:4

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

这是我使用rand方法的方式:

 nyaaid "NYAA/N/WP#{Random.rand(0002..9999)}"
ruby-on-rails ruby ruby-on-rails-4 factory-bot
4个回答
2
投票

如果我正确理解您的问题,以下代码可以工作。

[1,1,1,1].map!{|x| (0..9).to_a.sample}.join


3
投票

另一种方法是使用String#%将随机数填零到四位数:

'%04d' % Random.rand(2..9999)

PS:0002并不意味着你可能认为它的作用。前导零表示该数字是八进制的(查看0010中的irb,你会看到8,而不是10)。你很幸运,因为2是八进制和十进制的2,但你真的应该使用2..9999来避免混淆。


1
投票

你需要将它包装在{}中

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

0
投票

FactoryGirl专门为此案例提供了序列:

sequence(:nyaaid) { |n| sprintf("NYAA/N/WP%04d", n) }
© www.soinside.com 2019 - 2024. All rights reserved.