Jas*_*nis 2 ruby ruby-on-rails
我有以下一组查询,但我确定这不是干.但是,我无法找到如何通过deal var过滤而不是为每个var再次查询.可能吗?
deals = Deal.all
won = Deal.find( :all, :conditions => ["status = 'won'"] ).count
pending = Deal.find( :all, :conditions => ["status = 'pending'"] ).count
lost = Deal.find( :all, :conditions => ["status = 'lost'"] ).count
Run Code Online (Sandbox Code Playgroud)
使用GROUP BY SQL子句:
Hash[Deal.all(:select => 'status, count(*) as count', :group => 'status').map{|e|
[e.status, e.count]
}]
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了你已经加载了所有记录.在这种情况下,您可以通过这种方式获得每个状态的计数:
Hash[deals.group_by(&:status).map{|k,v| [k,v.count]}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
415 次 |
| 最近记录: |