Rails分组并计算不同的记录

时间:2013-12-16 17:47:35

标签: ruby-on-rails

我有一个客户信用卡数据库(不是完整的数字,只有CC类型,如果他们通过验证),我正在尝试计算每种类型的卡(Visa,Amex等)的数量。

卡的类型在type表格中存储为Cards

我已尝试过:Card.count(:type).distinct但收到undefined method 'distinct'错误。

最终尝试返回每种卡类型的数组以及该表中有多少类型。

我在Postgres数据库上运行Rails 4.0.1和Ruby 2.0.0。

3 个答案:

答案 0 :(得分:2)

快速查看api.rubyonrails.org/classes/ActiveRecord/Calculations.html或许这个例子:

Person.group(:city).count

是你需要的

所以,它应该是这样的:

Card.group(:type).count 

答案 1 :(得分:0)

card_types = Card.all.select("distinct type").map(&:type)    
card_types.each do |ctype| 
  puts "There were #{Card.where(:type => ctype).count} cards of the '#{ctype}' type"
end

这可能就是你要找的东西。然而,当然有“更严格”的方法来实现这一点。

顺便说一下,'type'在rails中保留,不是允许的列名

答案 2 :(得分:0)

尝试: - Card.count(:group =>:type)