Sta*_*ers 14 ruby ruby-on-rails factory-bot
或者是生成随机和唯一用户名所必需的外部gem?
这是我目前的工厂:
factory :user_4 do
sequence(:id) { |n| n }
sequence(:first_name) { |n| "Gemini" + n.to_s }
sequence(:last_name) { |n| "Pollux" + n.to_s }
sequence(:profile_name) { |n| "GeminiPollux" + n.to_s }
sequence(:email) { |n| "geminipollus" + n.to_s + "@hotmail.co.uk" }
end
Run Code Online (Sandbox Code Playgroud)
使用序列方法适用于id,profile_name和email,但我的REGEX验证意味着名字和姓氏自动无效,因为它们中有一个数字.与独特性无关.
那么我该如何创建这些独特的名字呢?
Sim*_*tti 17
生成随机字符串有无限可能的解决方案,而不依赖于第三方宝石.
这是一个
('a'..'z').to_a.shuffle.join
# => "sugrjtyoiqlbxkzcfnawdhpevm"
Run Code Online (Sandbox Code Playgroud)
例
factory :user_4 do
sequence(:id) { |n| n }
first_name { "Gemini" + random_name }
# ...
end
def random_name
('a'..'z').to_a.shuffle.join
end
Run Code Online (Sandbox Code Playgroud)
如果随机因素太低,则可能会增加复杂性.
小智 16
factory :user_4 do
# ...
sequence(:first_name, 'a') { |n| "Gemini" + n }
sequence(:last_name, 'a') { |n| "Pollux" + n }
# ...
end
Run Code Online (Sandbox Code Playgroud)
FactoryGirl的#sequence方法接受第二个参数作为其起始值.这可以是String,Fixnum或支持通过#next方法递增的其他内容.
具有'a'序列的起始值将是a, b, c ... z, aa, ab, ac ...
| 归档时间: |
|
| 查看次数: |
6726 次 |
| 最近记录: |