Как найти всех пользователей с более чем 1 постом в консоли rails - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу вернуть всех пользователей с более чем 1 сообщением в консоли rails.

Пользователь has_many :posts и сообщение belongs_to :user

Я возился с методом where, но ничего не смог найти. Заранее спасибо!

1 Ответ

2 голосов
/ 11 апреля 2019
User.joins(:posts).group('users.id').having('count(posts.id) > 1')

Метод joins выполняет внутреннее объединение, в результате которого все пользователи имеют отношение к публикациям, а метод group используется для удаления всех дублирующихся строк.

Группировка по сообщениям с user_id, например, пример -

{
  1 => [post_1, post_2, post_3]
  2 => [post_5, post_10]
  ... so on
}

, затем применяется having (предпочтительнее, чем where для работы с агрегированными данными) предложение having("count(posts.id) > 1")

Наличие против где

Найти все записи, у которых количество ассоциаций больше нуля - Переполнение стека

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