在rails/ruby​​中使用group_by

Ell*_*iot 3 ruby ruby-on-rails ruby-on-rails-3

这是我的数组:

finalcount = Vote.where(:month => month, :year => year, :vote_id => vote.id).count
Run Code Online (Sandbox Code Playgroud)

我想用group_by(我认为?)将投票分组user_id(每个投票都有),然后user_id以最高票数返回.

我有什么想法可以做到这一点?

Mic*_*ley 6

你试过这个group方法吗?

finalcount = Vote.where(:month => month, :year => year, :vote_id => vote.id).group(:user_id).count
Run Code Online (Sandbox Code Playgroud)

会给你一个Hash键的位置user_id,值是count.然后,您可以调用max此结果以获取包含user_id和的两元素数组count.

这是一个我很方便的应用程序示例,我使用计算结果找到正确的模型实例并从中读取属性:

ruby-1.9.2-p136 :001 > ExternalPost.group(:service_id).count
 => {18=>1, 19=>1, 21=>4} 
ruby-1.9.2-p136 :002 > ExternalPost.group(:service_id).count.max
 => [21, 4]
ruby-1.9.2-p136 :003 > Service.find(ExternalPost.group(:service_id).count.max.first).user.first
 => "Brandon"
Run Code Online (Sandbox Code Playgroud)