結合したモデルの集計を行う
class TestController < ApplicationController def index @employees_with_sales = Employee.left_joins(:sales) .select("employees.id, employees.name, sales.sales_date AS sales_date, SUM(sales.amount) AS total_sales") .group("employees.id, sales.sales_date") .order("employees.id, sales.sales_date") end end
上の例では、EmployeeモデルとSaleモデルを結合し、EmployeeモデルのidとSaleモデルのsales_dateフィールドでグルーピングし、Employeeモデルのidとname、Salesモデルのsales_dateフィールドを取得し、グルーピングされたSalesモデルのamountフィールドの合計をtotal_salesフィールドとして追加し、Employeeモデルのid、Salesモデルのsales_dateフィールドで昇順に並べ替えています。