RAILS: Как выбрать поля из связанной таблицы с группировкой и создать хеш из результата? - PullRequest
0 голосов
/ 23 марта 2019

Я хотел бы создать запрос на активную запись и сохранить результат в хэше, который включает в себя сводную информацию из связанных таблиц следующим образом.

Вот таблицы и ассоциации:

Post belongs_to: category
Category has_many: posts

Здесь я хотел бы подсчитать количество сообщений в каждой категории и создать сводную таблицу следующим образом (с SQL-запросом для нужной таблицы):

select c.name, count(p.id) from posts a left join categories c on p.category_id = c.id where p.status = 'Approved' group by (c.name) order by (c.name);

    Category   | count 
---------------+-------
 Basketball    |     2
 Football      |     3
 Hockey        |     4

(3 rows)

Наконец, я хотел бы сохранить результат в хэше следующим образом:

summary_hash = { 'Basketball' => 2, 'Football' => 3, 'Hockey' => 4 }

Буду признателен, если вы подскажете, как написать запрос на активную запись и сохранить результат в хэше.

1 Ответ

1 голос
/ 23 марта 2019

Попробуйте

Post.where(status: 'Approved').joins(:category).
  select("categories.name").group("categories.name").count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...