Rails 建立唯一值的频率并限制结果

Rails establishing frequencies of uniq values and limiting result

以下

1
@items.group(:nature_id).count(:nature_id)

one 获得结果的散列

1
{4=>1, 8=>1, 14=>2, 27=>1, 32=>1, 33=>1, 36=>1, 41=>2, 44=>1, 63=>1, 64=>4, 69=>1, 130=>7, 131=>3,[...]}

这个结果如何按计数值按所述值的降序排序


试试下面的:

1
@items.group(:nature_id).order('COUNT(nature_id) DESC').limit(100).count(:nature_id)

order('COUNT(nature_id) DESC') - 将按计数排序结果

Also, syntaxically, this non-attribute arguments will be disallowed in Rails
6.0.

根据这篇文章 COUNT(nature_id) DESC 不包含任何用于 SQL 注入的用户输入,我们需要使用以下内容显式绕过它:

1
@items.group(:nature_id).order(Arel.sql('COUNT(nature_id) DESC')).limit(100).count(:nature_id)