Учитывая, что у пользователя много свойств:
class User
has_many :properties
end
Мне нужен отчет, в котором сначала будет подсчитано, сколько свойств имеет каждый пользователь, а затем сгруппированы пользователи, имеющие одинаковое количество свойств, и посчитаем их.
Я не могу использовать счетчик кэша в модели User по причинам, которые выходят за рамки вопроса (запрос объединяет динамическую область свойств).
Чтобы было проще, пока у нас есть это:
`User.joins(:properties).group('users.email')
.order('COUNT(properties.id) DESC').count`
Возвращает хэш, подобный следующему:
{
"email1@gmail.com"=>209,
"email2@gmail.com"=>160,
"email3@gmail.com"=>160
}
Моя цель, основываясь на хэше предыдущего примера, в итоге получить хеш, подобный этому:
{
209 => 1,
160 => 2
}
Поскольку у нас был 1 пользователь с 209 свойствами и 2 пользователя с 160 свойствами.
Я уже достиг результата, используя .group_by
в ruby, но цель - достичь его только с помощью ActiveRecord / SQL. Я не против запускать сырой SQL, если это необходимо.