ich eine Gaming-Plattform entwickle und ich habe die folgenden (vereinfacht) Modelle:Fügen Sie alle IDs in Active Abfrage
class Game < ActiveRecord:Base
has_many :game_players
has_many :players, through: :game_players
end
class Player < ActiveRecord:Base
has_many :game_players
has_many :games, through: :game_players
end
class GamePlayer < ActiveRecord:Base
belongs_to :game
belongs_to :player
end
Ich brauche eine Activerecord-Abfrage durchzuführen, die von einer bestimmten Gruppe für alle Spiele gespielt sieht der Benutzer. Um zum Beispiel der Daten gegeben:
+---------+-----------+
| game_id | player_id |
+---------+-----------+
| 10 | 39 |
| 10 | 41 |
| 10 | 42 |
| 12 | 41 |
| 13 | 39 |
| 13 | 41 |
+---------+-----------+
Ich brauche einen Weg zu finden, um zu bestimmen, welche Spiele werden von den Spielern mit ids gespielt 39 und 41, die in diesem Fall die Spiele mit ids 10 und 13 sein würden. die Abfrage, die ich bisher gefunden habe, ist oben:
Game.joins(:players).where(players: {id: [39, 41]}).uniq
jedoch diese Abfrage zurückgibt, die Spiele, die von jeder dieser Spieler gespielt, statt der von beiden gespielten Spiele.
Dies funktioniert, aber ich möchte 1 einzelne SQL - Abfrage durchgeführt werden, da die Anzahl der Spieler beliebig groß sein könnte – Bustikiller
'Game.joins (: players) .where (Spieler: {id: 39}) : {id: 41}) '- versuche so etwas – dp7