我有一个technicians table,一个clients table和一个jobs table。我的技术人员模型如下:
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
我能够列出技术人员完成的工作量列表
techs = Technician.all
techs.each do |tech|
puts "#{tech.name} has been assigned #{tech.jobs.count} jobs"
end
现在我该如何查看工作最少的技术人员或工作最多的客户?我一直在考虑按sum asc / desc进行排序,但是我仍无法解决这个问题。我不使用滑轨,而只是使用带有activerecord宝石的普通旧Ruby。
答案 0 :(得分:0)
Client.joins(:job_orders).order('COUNT(job_orders) DESC').group(:id).limit(1)
将为您提供最多订单的客户,Technician.joins(:jobs).order('COUNT(jobs) ASC').group(:id).limit(1)
将为您提供最少数量的技术员
编辑:对于<6.0的Rails版本