如何在rails中逐行计数?

use*_*403 26 ruby group-by ruby-on-rails count

当我使用时User.count(:all, :group => "name"),我得到多行,但这不是我想要的.我想要的是行数.我怎么才能得到它?

not*_*ere 30

目前(18.03.2014- Rails 4.0.3)这是正确的语法:

Model.group("field_name").count
Run Code Online (Sandbox Code Playgroud)

它返回带有计数值的哈希,例如

SurveyReport.find(30).reports.group("status").count

#=> {
  "pdf_generated" => 56
}
Run Code Online (Sandbox Code Playgroud)


hgm*_*mnz 25

  1. User.count 将为您提供总用户数并转换为以下SQL: SELECT count(*) AS count_all FROM "users"
  2. User.count(:all, :group => 'name') 将为您提供唯一名称列表及其计数,并转换为此SQL: SELECT count(*) AS count_all, name AS name FROM "users" GROUP BY name

我怀疑你想要上面的选项1,但我不清楚你想要/需要什么.


sik*_*chu 12

您可能想要计算用户的不同名称?

User.count(:name, :distinct => true)
Run Code Online (Sandbox Code Playgroud)

如果您在数据库中拥有名为John,John,Jane,Joey(例如)的用户,则返回3.

 ________
| name   |
|--------|
| John   |
| John   |
| Jane   |
| Joey   |
|________|
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试使用User.find(:all,:group =>"name").count

祝好运!