Упорядочить игроков по сумме их ассоциативной модели

У меня есть база данных с 6500 playersи у каждого игрока в среднем 15 игр results.

Вариант использования

Я хочу создать список игроков, упорядоченный по сумме их призовых денег (поле в таблице результатов ). Я предпочитаю, чтобы это было в какой-то области, поэтому я также могу отфильтровать список по стране игрока и т. д.

Производительность

Я видел сообщения, в которых упоминается поле cache_counterдля повышения производительности. В моем случае у меня тысячи записей результатов (75.000+)поэтому я не хочу, чтобы вычисления выполнялись каждый раз, когда кто-то посещает сгенерированные списки.

Вопрос

Каков наилучший шаблон для решения этой проблемы? И как мне это реализовать?

Модели

class Player < ActiveRecord::Base
  has_many :results
end

class Result < ActiveRecord::Base
  belongs_to :player
end

Схемы

  create_table "players", :force => true do |t|
    t.string   "name"
    t.string   "nationality"
  end

  create_table "results", :force => true do |t|
    t.integer  "player_id"
    t.date     "event_date"
    t.integer  "place"
    t.integer  "prize"
  end

Обновление

Чего я пытаюсь достичь, так это добраться до точки, где я могу использовать:

@players = Player.order_by_prize

и

@players = Player.filter_by_country('USA').order_by_prize('desc')
5
задан Fred Fickleberry III 10 May 2012 в 01:03
поделиться