Você pode tentar se puder executar duas consultas e cruzar os resultados:
Game.joins(:players).where(players: {id: 39}) & Game.joins(:players).where(players: {id: 41})
Game.joins(:players).where(players: {id: 39}) & Game.joins(:players).where(players: {id: 41})