鉴于用户具有许多属性:
class User
has_many :properties
end
我想要一个报告,该报告将首先计算每个用户拥有多少个属性,然后将具有相同数量属性的用户分组在一起,对它们进行计数。
由于超出问题范围的原因,我无法在User模型上使用计数器缓存(查询合并了Properties的动态范围)。
为简单起见,到目前为止,我们已经做到了:
`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个属性。
我已经使用ruby的.group_by
实现了结果,但是目标是仅使用ActiveRecord / SQL实现它。如果有必要,我不介意运行原始SQL。
答案 0 :(得分:0)
不确定是否仍需要帮助。但是,如果其他用户对此有所迷惑,希望对他们有帮助。
User.joins(:properties).group('users.id')
.order('COUNT(properties.id) DESC').count