Rails 3 - Как использовать фильтр результатов суммирования? - PullRequest
2 голосов
/ 16 сентября 2010

Я работаю над приложением Rails 3, и мне нужно вернуть список игроков, у которых сумма points_received на игрока больше указанной суммы.

Я пробовал это:

Answer.sum(:points_received, :group => 'player_id').having("points_received > 5")

но, конечно, это дает мне ошибку: NoMethodError: неопределенный метод, имеющий для #

Модель ответа определяется как:

 create_table "answers", :force => true do |t|
    t.integer  "player_id"
    t.integer  "round_id"
    t.string   "response"
    t.integer  "points_received"
  end

Так что я понимаю, что sum возвращает обратно упорядоченный хэш player_id, sum (points_received), но я хочу видеть только результаты, в которых сумма (points_received) больше указанного значения.

Есть предложения?

Заранее спасибо!

1 Ответ

3 голосов
/ 16 сентября 2010

Можете ли вы в это поверить, сразу после того, как я опубликовал это, я подумал об обмене синтаксисом и получил результат. Вот что я в итоге сделал:

Answer.group(:player_id).having("sum(points_received) > 5").sum(:points_received)

это вернуло мне хэш player_ids и sum (points_received) только для тех, чья сумма больше 5.

Спасибо, что все равно читаете. Может быть, это поможет кому-нибудь однажды!

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