Как получить строку с максимальной суммой? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть таблица техников , таблица клиентов и таблица заданий .Моя модель техников выглядит следующим образом:

class Technician < ActiveRecord::Base
  has_many :jobs
  has_many :clients, through: :job_orders
end

Моя модель работы выглядит следующим образом:

class Job < ActiveRecord::Base
  belongs_to :technician
  belongs_to :client
end

А модель моих клиентов выглядит следующим образом:

class Client < ActiveRecord::Base
  has_many :job_orders
  has_many :technicians, through: :jobs
end

Iя могу получить список того, сколько заданий выполнил техник, выполнив

techs = Technician.all
techs.each do |tech|
  puts "#{tech.name} has been assigned #{tech.jobs.count} jobs"
end

Теперь, как я могу увидеть техника с наименьшим количеством заданий или клиента с наибольшим количеством запросов на работу?Я думал о сортировке по сумме asc / desc, но я не смог обдумать проблему.Я не использую рельсы, просто старый Ruby с гемом activerecord.

1 Ответ

0 голосов
/ 12 июля 2019

Client.joins(:job_orders).order('COUNT(job_orders) DESC').group(:id).limit(1) даст вам Клиент с наибольшим количеством заказов, Technician.joins(:jobs).order('COUNT(jobs) ASC').group(:id).limit(1) даст вам техников с наименьшим количеством заданий

Редактировать: Для версий Rails <6.0 </strong>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...