У меня есть таблица, которая показывает всех клиентов и все задания для каждого клиента. Чтобы ускорить загрузку страницы, мне нужно оперативно загружать связанные задания, как показано ниже.Rails: Яркая загрузка связанных записей с внешним соединением
Однако есть две проблемы, связанные с этим подходом:
Customers
, которые не имеют работы, не загружаются, даже если нетjoins()
методЯ должен использовать медленный Ruby для сортировки заданий для каждого клиента по
jobs.id
.
Есть ли решение?
# http://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-eager-loaded-associations
@customers = Customer.all.includes(:jobs).where(jobs: {booking_status: [2,3]}).order('users.id ASC').references(:jobs)
@customers.each do |customer|
puts customer.full_name
jobs = customer.jobs.sort_by {|job| job.id}
jobs.each do |job|
puts job.id
Вы не получаете не -job клиентов из-за вашего предложения. Вы заявляете, что хотите, чтобы клиенты имели конкретное бронирование. Попробуйте заменить предложение where следующим: 'where (" jobs.booking_status =? OR count (jobs) =? ", [2,3], 0)' – Nathan