ActiveRecord4でpolymorphicなScoreの値の合計値でソートしたい。
TeamモデルとPlayerモデルがhas_manyの関係でpolymorphicなScoreモデルを持つというような構成で チームやプレイヤーに得点を付けることができるシステムを作成しています。
チームに所属しているプレイヤーの一覧を表示するときに Scoreモデルが持つvalueカラムの合計値を使ってソートをかけたいです。
Playerモデルに以下のスコープを作成しました。
scope :sorted, -> {
joins(:scores)
.group("players.id")
.order("sum(scores.value) desc")
}
しかし、これだとひとつもスコアを付けられていない要素が含まれずに スコアを付けられている要素の中でソートが行われてしまいます。
スコアが付けられていない要素に対してはデフォルトで0点ということにして 全ての要素を取得したいのですがどうすればよいでしょうか?