我有两个相互关联的模型:
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 }
从John的id为1,Peter的id为2等等的角度来看,这是正确的,但是我需要在哈希中使用它们的名称(column:name)而不是id。
如何用最少数量的查询访问数据库?
答案 0 :(得分:1)
您可以使用 joins 代替 includes ,如下所示。
Article.joins(:author).group("author.name").count