我有播放器模型和匹配模型。每个匹配都有一个wins_id和一个loser_id,用于输入播放器。
如何让所有从未参加比赛的球员获得胜利?
即。得到所有玩家ID,既不是winner_id也不是loser_id列。
我正在使用Rails 4。
Players
-------------
id
1
2
3
4
5
6
7
Matches
-------------
winner_id loser_id
1 2
1 3
1 4
所以结果应该是玩家5,6和7。
答案 0 :(得分:1)
Player.where.not(id:Match.pluck(:winner_id,:loser_id).flatten.uniq)
答案 1 :(得分:0)
也可能有更好的方法。但你也可以这样做:
ids = Matche.select(:winner_id).distinct.map{|match| match.winner_id} + Matche.select(:loser_id).distinct.map{|match| match.loser_id}
@players = Player.where.not(id: ids)