2009-05-31 68 views
4

我有這一點的代碼,我得到一個空的對象。組和計數在軌道

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

這是寫入查詢的正確方法嗎?我想要一個具有選項ID的記錄集合以及在PollRoles模型中找到選項ID的次數。

編輯:這是I''m通過的結果如何迭代:

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

PollRole與選項的關係如何?你爲什麼要爲每個Option選項打印一個新的問題? 「選項」不會涉及同一個問題嗎?顯示基本的`has_many`,`belongs_to`聲明並添加更多關於您正在嘗試解決的問題的解釋將幫助我嘗試給您一個更好的答案。 – austinfromboston 2009-06-07 22:41:24

回答

0

你想用this function做這樣的事情
PollRoles.count(:all, :group => 'option_id')應該返回的哈希與號碼映射每個option_id的記錄匹配它。

+0

我將它改爲: @results = PollRoles.count(:all,:group =>'option_id',:conditions => [「poll_id =?」,@ poll.id]) 但仍然沒有零結果。 – alamodey 2009-05-31 03:40:41

+0

即時通訊confused ..你說要'有一個選項ID'的記錄集合,但你的條件是:conditions => [「poll_id =?」,@ poll.id])..是選項ID和輪詢ID的同樣..你能解釋你的分貝的結構好一點嗎 – 2009-05-31 03:57:01

0

你怎麼得到這個:

PollRoles.find(:全部:條件=> [ 「?poll_id =」 @ poll.id])。收集{| P | p.option_id}