neo*_*ode -3 ruby ruby-on-rails
我的数据库中有一个用户表,每个用户的评级形式为1到5.我想找到每个评级的计数.我怎么能用对象做到这一点?
我有一个用户对象.
[#<User id: 1, email: "email1@email.com", rating: 1>,#<User id: 2, email: "email2@email.com", rating: 3 >,#<User id: 3, email: "email3@email.com", rating: 4 >,#<User id: 4, email: "email4@email.com", rating: 3 >,#<User id: 5, email: "email5@email.com", rating: 4 >,#<User id: 7, email: "email7@email.com", rating: 2 >,#<User id: 8, email: "email8@email.com", rating: 5 >,#<User id: 9, email: "email9@email.com", rating: 5 >]
Run Code Online (Sandbox Code Playgroud)
我想计算每个评级计数的计数; 评级1和评级5的计数只有1个.我想返回类似的内容:
{'1' => 1 ,'2' => 1 ,'3'=>2,'4'=>2,'5'=>2}
Run Code Online (Sandbox Code Playgroud)
试试这个
counts = User.group(:rating).count
Run Code Online (Sandbox Code Playgroud)
更新
如果没有评级,你想返回0,Ruby提供了很多方法.例如,我更喜欢默认Hash值http://apidock.com/ruby/v1_9_3_392/Hash/new/class
result = Hash.new(0) # 0 here is default value
result.merge!(counts)
result[2] # some value
result[-1] # => 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |