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")
Наличие против где
Найти все записи, у которых количество ассоциаций больше нуля - Переполнение стека