データベースへの呼び出し回数を最小限に抑えるために、このスニペットをリファクタリングするにはどうすればよいですか?
/Player.rb
def num_matchups
this_week_appearances = 0
this_week_appearances += Matchup.where(player_1: self.id).sum("pts_player_1")
this_week_appearances += Matchup.where(player_1: self.id).sum("pts_player_2")
this_week_appearances += Matchup.where(player_2: self.id).sum("pts_player_1")
this_week_appearances += Matchup.where(player_2: self.id).sum("pts_player_2")
end
目標は、プレーヤー (これが呼び出されたプレーヤー) が投票されたマッチアップに参加した回数を見つけることです。プレイヤーは、Matchup.player_1
またはMatchup.player_2
フィールドで対戦に参加することができました (違いはありません)。私は彼らが勝ったか負けたか (出場回数だけ) を気にしないため、対戦で両方のプレイヤーからのポイントが必要です。
次のようになると思いますが、使用する構文がわかりません。
this_week_appearances = Matchup.where(player_1: self.id OR player_2: self.id).sum("pts_player_1").sum("pts_player_2")
このようなことはできますか?