Найти все сообщения с более чем определенным количеством комментариев - PullRequest
5 голосов
/ 30 ноября 2010

У меня есть простое приложение для блога rails 3, в котором посты содержат много комментариев, а комментарии принадлежат посту.

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

Ответы [ 3 ]

8 голосов
/ 30 ноября 2010

Как это, возможно?

Post.select('posts.*, count(comments.id) as comment_count').
  joins(:comments).
  group('posts.id').
  having('comment_count > 5')
5 голосов
/ 02 марта 2013

В Postgres 9.1 Я должен был настроить такие вещи, как postgres не устраивает условия для вычисляемых полей или что-то в этом роде.

Post.select('posts.*, count(comments.id) as comment_count').
  joins(:comments).
  group('posts.id').
  having('count(comments.id) > 5')
0 голосов
/ 30 ноября 2010

Отличный ответ от лапши ... спасибо за это!

Мне нужно было найти - придерживаться примеров классов исходного вопроса - 4 поста, которые были недавно прокомментированы ... небольшой вариант ответа нудла делает свое дело:

Post.select('posts.*, max(comments.created_at) as last_commented_at').
  joins(:comments).
  group('posts.id').
  order('last_commented_at DESC').
  limit(4)

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...