代码之家  ›  专栏  ›  技术社区  ›  user9503053

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

  •  1
  • user9503053  · 技术社区  · 8 年前

    我想创建几十个依赖此阵列数据的登录,登录:

        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
    
    4 回复  |  直到 8 年前
        1
  •  5
  •   Zoran    8 年前

    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

    希望这有帮助!

        2
  •  3
  •   max Mike Williams    8 年前

    .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
    

    或使用 Array.new

        3
  •  0
  •   kajal ojha    8 年前

    可以使用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
    
        4
  •  0
  •   Gagan Gami    8 年前

    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