以下のように project は user に所属し、 user は company に所属しているモデルを考えます。
class Project < ApplicationRecord belongs_to :user end class User < ApplicationRecord belongs_to :company has_many :projects end class Company < ApplicationRecord has_many :users end
この状況で company_id 毎に、 project.deleted = 0 の project 数を集計したいとします。
ただし、companyは id= 1, 2 のみを対象とする。
このクエリをスマートに生成してくれる、メソッドは以下になります
@projects = Project.where(deleted: 0) .left_joins(user: :company) .where(companies: { id: [1, 2}) @size_hash = @projects.group(:company_id).size