如何在一个数组中多次重复单个散列?

How to repeat single hash multiple times in one array?

我想创建数十个依赖于此数组中数据的登录名,登录名:

    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 do 但这不适用于数组。

这是我在登录时传递的代码:

    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

.times returns 可以调用 .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

简化 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 替换为您的用例所需的元素数。

希望对您有所帮助!

您可以使用 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

也可以这样做:

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