Rails как выполнить цикл и построить один объект на основе нескольких запросов к одной и той же таблице?

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

 @companies = this has lets say 3 but is dynamic in range


@companies.each do |c|
  workers = current_user.workers.find_by_company_id(c.id)
end
  

В конце всего этого я хочу, чтобы workers выглядели так, как будто это был результат одного запроса. Но в этом случае объект должен представлять собой комбинацию из 3 запросов.

Возможно?

Ответ №1:

Это?

  workers = current_user.workers.where(:company_id => @companies.map(amp;:id))
  

Комментарии:

1. Верно, я забыл о map. Спасибо. Мне нравятся элегантные ответы, подобные этому.

Ответ №2:

Rails автоматически сопоставляет идентификаторы для вас:

 current_user.workers.find_all_by_company_id(@companies)