1. ホーム
  2. ruby-on-rails

[解決済み] rails/rubyでgroup_byを使用する。

2022-02-15 09:13:57

質問

以下は私の配列です。

finalcount = Vote.where(:month => month, :year => year, :vote_id => vote.id).count

を使いたいのですが group_by (だったかな?)で票をまとめる。 user_id (各票が持っている)を返します。 user_id を、最も高い得票数で表示します。

どうすればいいのでしょうか?

どのように解決するのですか?

を試しましたか? group メソッドを使用できますか?

finalcount = Vote.where(:month => month, :year => year, :vote_id => vote.id).group(:user_id).count

を与えると Hash ここで、キーは user_id で、値は count . 次に max を含む 2 要素の配列が得られます。 user_idcount .

以下は手持ちのアプリの例で、計算結果を使って正しいモデルインスタンスを見つけ、そこからプロパティを読み取るというものです。

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"