我想创建几十个依赖于此数组中的数据的登录,登录:
logins = [
{
email: Faker::Internet.email,
password: "password",
first_name: Faker::Name.first_name,
last_name: Faker::Name.last_name
},
{
email: Faker::Internet.email,
password: "password",
first_name: Faker::Name.first_name,
last_name: Faker::Name.last_name
}
]
编写此数组的更好方法是什么,而不是复制和粘贴该哈希数十次?我熟悉x.times但是这对数组不起作用。
以下是我在登录中传递的代码:
logins.each do |login|
li = LoginInformation.new(login: login[:email], password: login[:password])
if UserManager.save(li)
company_ids.each do |id|
li.contacts.create(first_name: login[:first_name], last_name: login[:last_name], email_address: login[:email], company_id: id, is_employee: true)
end
end
end
答案 0 :(得分:4)
简化logins
数组创建的一种方法是将包含Faker
方法的哈希对象作为块传递,如下所示:
logins = Array.new(10) { { email: Faker::Internet.email, password: 'password', first_name: Faker::Name.first_name, last_name: Faker::Name.last_name } }
您可以将此示例中的10
替换为用例所需的元素数。
希望这有帮助!
答案 1 :(得分:2)
.times
返回一个枚举器,您可以调用.map
来获取数组。
logins = 10.times.map do
{
email: Faker::Internet.email,
password: "password",
first_name: Faker::Name.first_name,
last_name: Faker::Name.last_name
}
end
或者使用Zoran Pesic提到的Array.new
。
答案 2 :(得分:0)
您可以使用for循环多次插入值
logins=[]
for i in 0..10
logins <<
{
email: Faker::Internet.email,
password: "password",
first_name: Faker::Name.first_name,
last_name: Faker::Name.last_name
}
end
答案 3 :(得分:0)
也可以这样做:
10.times do
login = { email: Faker::Internet.email, password: 'password', first_name: Faker::Name.first_name, last_name: Faker::Name.last_name }
li = LoginInformation.new(login: login[:email], password: login[:password])
if UserManager.save(li)
company_ids.each do |id|
li.contacts.create(first_name: login[:first_name], last_name: login[:last_name], email_address: login[:email], company_id: id, is_employee: true)
end
end
end