2009-05-31 69 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}