在Rails中,您可以使用:
Model.group(:字段).Count之间的
产生类似的东西:
{" a" => 7," b" => 5," c" => 3" d" => 3," e" => 4}
但是, DATABASE 在 DATABASE 进行计算时,计数仅计数,而不是整个表格 > p>
不要工作:
Model.limit(100)。集团(:字段).Count之间的
limit将限制散列输出键而不是使用的表格行
Model.last(100)。集团(:字段).Count之间的
Last返回一个数组并引发错误
我正在使用: * Ruby 2.3.3p222 * Rails 4.2.4 *第9.5.6页
答案 0 :(得分:2)
正如您所提到的,limit
正在分组实例上应用,而不是实例本身。一个简单的解决方法是:
Model.where(id: Model.limit(100).select(:id)).group(:field).count
答案 1 :(得分:1)
也可以使用group_by
对数组对象进行分组:
grouped = Model.last(100).group_by(&:field).map { |k,v| [k, v.length] }
这将返回以下矩阵:
#=> [["Field value 1", value_1_count], ["Field value 2", value_2_count], etc...]
矩阵也可以变成哈希:
grouped.each_with_object({}) { |value, memo| memo[value[0]] = value[1] }
总结一下,请尝试以下方法:
Model.last(100)
.group_by(&:field)
.each_with_object({}) { |(key, value), memo| memo[key] = value.length }