Вот немного контекста образца для моего вопроса ниже, чтобы помочь прояснить, что я спрашиваю ...Возможно ли построить динамические столбцы агрегата в запросе ARel, который использует соединение?
Зонирование
Users
- id
- name
Answers
- id
- user_id
- topic_id
- was_correct
Topics
- id
- name
Паспорта
Users
id | name
1 | Gabe
2 | John
Topics
id | name
1 | Math
2 | English
Answers
id | user_id | topic_id | was_correct
1 | 1 | 1 | 0
2 | 1 | 1 | 1
3 | 1 | 2 | 1
4 | 2 | 1 | 0
5 | 2 | 2 | 0
Что Я бы хотел, чтобы в результирующем наборе была таблица с одной строкой для каждого пользователя и два столбца на одну тему, которая отображает сумму правильных ответов для темы, который отображает сумму неправильных ответов для этой темы. Для данных примера выше, этот результирующий набор будет выглядеть так:
Моего желаемого результата
users.id | users.name | topic_1_correct_sum | topic_1_incorrect_sum | topic_2_correct_sum | topic_2_incorrect_sum
1 | Gabe | 1 | 1 | 1 | 0
2 | John | 0 | 1 | 0 | 1
Очевидно, что если бы было больше тех в таблице Темы, я хотел бы этот запрос, чтобы включить новые correct_sum и errors_sums для каждой темы, которая существует, поэтому я ищу способ написать это без жесткого кодирования topic_ids в функции sum моего предложения select.
Есть ли разумный способ магии такого рода с помощью AREL?
Спасибо за ответ, Стивен. В моем случае я использую Postgresql, и у меня есть запрос, который мне уже нужен, написанный на SQL, это просто icky sql, который я не люблю и надеялся увидеть, в основном для моего назидания, если AREL может мне помочь сделайте это в Rails 3. –