2009-05-31 12 views
4

私はこのコードを持っていて、空のオブジェクトを取得します。Railsでグループ化してカウント

@results = PollRoles.find(
      :all, 
      :select => 'option_id, count(*) count', 
      :group => 'option_id', 
      :conditions => ["poll_id = ?", @poll.id]) 

これはクエリを書き込む正しい方法ですか?私は、オプションidとオプションIDがPollRolesモデルで見つかった回数を持つレコードのコレクションが必要です。

EDIT:これはI''mは結果を反復処理する方法である:

<% @results.each do |result| %> 
      <% @option = Option.find_by_id(result.option_id) %> 
      <%= @option.question %> <%= result.count %> 
     <% end %> 
+0

PollRoleはどのようにオプションに関連していますか?なぜあなたは 'オプション'ごとに新しい '質問'を印刷しますか?多くの 'オプション 'は同じ質問に関係しないだろうか?基本的な 'has_many'、' belongs_to'宣言を表示し、あなたが解決しようとしている問題のもう少し説明を加えると、より良い答えを出すのに役立ちます。 – austinfromboston

答えて

0

あなたはこの
PollRoles.count(:all, :group => 'option_id')のような事をするthis functionを使用するには番号が付いておきoption_idをマッピングするハッシュを返す必要がありますそれに合ったレコードの

+0

私はこれを次のように変更しました: @results = PollRoles.count(:all、:group => 'option_id'、:conditions => ["poll_id =?"、@ poll.id]) しかし、結果。 – alamodey

+0

私は混乱しています。あなたは 'オプションIDを持っているレコードの集まりですが、ur条件はです:条件=> ["poll_id =?"、@ poll.id])はオプションIDとポーリングIDです。同じ。あなたのデータベースの構造を少し良く説明できますか? –

+0

オプションは投票に関連しています。投票には多くのオプションがあります。だから私は明らかに特定の投票の結果を表示しようとしている。 – alamodey

0

あなたはこれで何を得るのです:

PollRoles.find(:すべて:条件=> [ "?poll_id ="、poll.id @])。{集める| P | p.option_id}

+0

空の結果nilが表示されます。 – alamodey

+0

poll_id == @ poll.idのPollRolesがありません – klochner

+0

OK結果は実際に表示されています。しかし、それらをどのように反復するのですか?編集されたコードを参照してください。 – alamodey

関連する問題