私はこれをどうやって行うのが最善かを考えようとしています…私は毎日開催されるコンテストがあり、コンテスト参加者が参加し、すべてのコンテストでそれぞれがスコアを獲得します。一定期間に行われた競技会の各競技者の合計スコアを取得し、Railsで引き続き使用できる「仮想」競技モデル(つまり、単一の行)を取得できるようにしたいと考えています。
私のコード/データは次のように構成されています。
競争:
has_many :contestant_scores
has_many :contestants, through: :contestant_scores
コラム:id, date
出場者:
has_many :contestant_scores
列:id, name
ContestantScore:
belongs_to :competition
belongs_to :contestant
列:competition_id, contestant_id, score
次のデータが与えられます:
(competitions)
id | date
---------------
0 | 2013-01-01
1 | 2013-01-02
2 | 2013-01-03
(contestants)
id | name
--------------
0 | Jake
1 | Finn
2 | Bubblegum
(contestant_scores)
competition_id | contestant_id | score
--------------------------------------
0 | 0 | 1
0 | 1 | 2
0 | 2 | 3
1 | 0 | 1
1 | 1 | 2
1 | 2 | 3
2 | 0 | 1
2 | 1 | 2
2 | 2 | 3
2013-01-01から2013-01-03までのすべての競技会を取得し、各競技者の合計スコア(最初に最高スコアでソート)を取得するにはどうすればよいですか?基本的に、私は欲しいです:
- IDと日付を含む単一の競技結果
nil
(「仮想」であるため) - できるよう
virtual_competition.scores.first.score
に9
- できるよう
virtual_competition.scores.first.contestant.name
に"Bubblegum"
これがまったく理にかなっていることを願っています。そして、あなたが私を正しい方向に向けることができることを願っています。必要に応じて、より「純粋な」SQLを使用することを嫌がりません。重要なのは、ActiveRecordのオブジェクトマッピングを結果で利用できるようになることです。
違いがあれば、データベースにPostgresを使用しています。