У меня есть две модели, связанные друг с другом:
class Article < ApplicationRecord
belongs_to :author
end
class Author < ApplicationRecord
has_many :articles
end
Мне нужно посчитать количество статей, написанных каждым автором, и вернуть хеш следующим образом:
{"John" => 6, "Peter" => 20, "Alice" => 12}
Чтобы избежать проблемы N + 1 запросов, я попытался это сделать:
Article.includes(:author).group(:author_id).count
# => {1 => 6, 2 => 20, 3 => 12 }
Это в некотором роде правильно в том смысле, что идентификатор Джона равен 1, идентификатор Питера равен 2 и т. Д., Но мне нужны их имена (колонка: имя) в хэше вместо идентификатора.
Как я могу сделать это с наименьшим количеством запросов, попадающих в базу данных?