2009-05-31 2 views
4

У меня есть этот бит кода, и я получаю пустой объект.Группа и счет в Rails

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

Это правильный способ написания запроса? Мне нужна коллекция записей с идентификатором опции и количеством раз, когда этот идентификатор опции найден в модели PollRoles.

EDIT: Это как I''m переборе результатов:

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

Каким образом PollRole относится к варианту? Почему вы печатаете новый 'question' для каждого' Option'? Разве не многие «Варианты» относятся к одному и тому же вопросу? Показывая основные декларации 'has_many',' belongs_to' и добавляя немного больше объяснений проблемы, которую вы пытаетесь решить, поможет мне в попытке дать вам лучший ответ. – austinfromboston

ответ

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

+0

im confused .. u say want 'коллекция записей, имеющих опцию id', но условие ur: условия => ["poll_id =?", @ Poll.id]) .. являются идентификаторами id id и poll то же .. не могли бы вы объяснить структуру вашего db немного лучше? –

+0

опции связаны с опросом. У опроса есть много вариантов. Поэтому здесь я, очевидно, пытаюсь отобразить результаты для определенного опроса. – alamodey

0

Что вы получаете с этим:

PollRoles.find (: все,: условия => [ "? Poll_id =" @ poll.id]). Собирать {| р | p.option_id}

+0

Получаю пустой результат, ноль. – alamodey

+0

, то у вас нет PollRoles с poll_id == @ poll.id – klochner

+0

OK Я получаю результаты на самом деле. Но как мне проходить через них? См. Отредактированный код. – alamodey

Смежные вопросы