如何在一个数组中多次重复单个哈希?

use*_*053 1 ruby ruby-on-rails ruby-on-rails-3 faker

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

    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 
        }
    ]
Run Code Online (Sandbox Code Playgroud)

有什么更好的方法来编写这个数组而不是将哈希复制和粘贴几十次?我熟悉 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
Run Code Online (Sandbox Code Playgroud)

Zor*_*ran 5

简化logins数组创建的一种方法是将包含Faker方法的哈希对象作为块传递,如下所示:

logins = Array.new(10) { { email: Faker::Internet.email, password: 'password', first_name: Faker::Name.first_name, last_name: Faker::Name.last_name } }
Run Code Online (Sandbox Code Playgroud)

您可以将10本示例中的替换为您的用例所需的元素数量。

希望这可以帮助!