активная запись - группировка с объединениями - PullRequest
2 голосов
/ 28 октября 2011

Я хочу иметь возможность выводить что-то вроде следующего:

Name     Car Type 1     Car Type 2     Car Type 3
Dave     1                    3          6
Mike     5                    2          8

Любой совет по достижению этого с активной записи? (рельсы 3.1)

Модели:

class Person
#name
 has_many :sales
end

class Sales
    belongs_to :person
    belongs_to :car
end

class Cars
 #type, id, name
    has_many :sales
end

1 Ответ

1 голос
/ 28 октября 2011

решение без SQL:

sales = Sale.includes( :person, :car ).all # or whatever you want to filter
sales_by_person = sales.group_by( :person )

grouped_sales = {}

sales_by_person.each do |person,sales|
  grouped_sales[person] = sales.group_by(:car).map { |car,car_sales| [ car, car_sales.size ] }
end

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