У меня есть модель поста с has_many
комментариями.У каждого сообщения есть идентификатор потока (но нет модели с именем Thread).
Так что, если я хочу посчитать количество потоков в этом сообщении, я делаю что-то вроде
> post.comments.count(:thread, :distinct => true)
SELECT COUNT(DISTINCT "comments"."thread") FROM "comments" WHERE "comments"."post_id" = 3
И этоработает отлично.Но что, если я хочу посчитать количество потоков только с одним комментарием?
> post.comments.group(:thread).having('COUNT(*) == 1').count
SELECT COUNT(*) AS count_all, thread AS thread FROM "comments" WHERE "comments"."post_id" = 3 GROUP BY thread HAVING COUNT(*) == 1 ORDER BY id
Так что вместо Integer у меня есть OrderedHash.И я должен сделать ненужный шаг
> post.comments.group(:thread).having('COUNT(*) == 1').count.count
Есть ли лучшее решение?