Сохраните вывод results.each в массиве ruby ​​on rails

Код:

 {   db = Mysql2::Client.new( :host => 'localhost', :username => 'username',
  password => 'password', :database => 'database')

results = db.query("select * from users where exported is not TRUE OR 
  NULL").each(:as => :array)

results.each { | row | puts row[1]}

Линия вывода results.each выводит данные компании, и я хочу использовать каждую строку в качестве ввода в вызове API. Есть идеи, как это сделать? Каждая строка должна содержать атрибут, как показано ниже.

"requested_item_value_attributes" => {
    "employee_first_name_6000555821" => 'results.each { | row | puts row[0]}',
    "employee_last_name_6000555821" => "results.each { | row | puts row[1]}",
    "hiring_manager_6000555821" => "results.each { | row | puts row[2]}",
    "job_title" => "results.each { | row | puts row[3]}",
    "start_date" => "#results.each { | row | puts row[4]}"
  } 

Если вы хотите сохранить результаты итерации коллекции, используйте map / collect.

Dave Newton 31.03.2018 02:50
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
1 357
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ты можешь использовать

nameArray = Array.new
nameArray.push(nameToSave)

добавить переменную nameToSave в конец массива nameArray. Просто вызовите push для каждого из ваших результатов, и у вас будет массив со всеми вашими именами из вашего запроса.

Используйте второй аргумент метода query.

results = []
db.query('SELECT * FROM table', results)
Ответ принят как подходящий

Используйте [Array#map], чтобы сопоставить results с массивом:

results.map do |row|
  "requested_item_value_attributes" => {
    "employee_first_name_6000555821" => row[0],
    "employee_last_name_6000555821" => row[1],
    "hiring_manager_6000555821" => row[2],
    "job_title" => row[3],
    "start_date" => row[4]
  }
}

или, что еще лучше:

results.map do |row|
  "requested_item_value_attributes" => 
    %w[
      employee_first_name_6000555821,
      employee_last_name_6000555821,
      hiring_manager_6000555821,
      job_title,
      start_date
    ].zip(row.take(5)).to_h
  }
}

Другие вопросы по теме