Вы пробовали метод group
?
finalcount = Vote.where(:month => month, :year => year, :vote_id => vote.id).group(:user_id).count
даст вам Hash
где ключи к user_id
и значения в count
. Затем вы можете вызвать max
по этому результату, чтобы получить двухэлементный массив, содержащий user_id
и count
.
Вот пример из приложения я имею под рукой, где я использую результат вычисления, чтобы найти правильный экземпляр модели и читать свойства из него:
ruby-1.9.2-p136 :001 > ExternalPost.group(:service_id).count
=> {18=>1, 19=>1, 21=>4}
ruby-1.9.2-p136 :002 > ExternalPost.group(:service_id).count.max
=> [21, 4]
ruby-1.9.2-p136 :003 > Service.find(ExternalPost.group(:service_id).count.max.first).user.first
=> "Brandon"
Если вам не нужны другие записи из Vote (они не будут их использовать), то это очень неэффективный способ сделать это. Лучшим способом было бы захватить одну строку из базы данных, которая содержит правильный user_id и их счет (см. Мой ответ). – nzifnab