Группировать и считать в Rails - PullRequest
4 голосов
/ 31 мая 2009

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

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

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

РЕДАКТИРОВАТЬ: Вот как я повторяю результаты:

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

Ответы [ 2 ]

0 голосов
/ 31 мая 2009

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

PollRoles.find (: все,: условия => ["poll_id =?", @ Poll.id]). Collect {| p | p.option_id}

0 голосов
/ 31 мая 2009

Вы хотите использовать эту функцию , чтобы делать подобные вещи
PollRoles.count(:all, :group => 'option_id') должен возвращать хеш-отображение каждые option_id с количеством записей, которые ему соответствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...