Dan*_*tos 2 sql activerecord ruby-on-rails rails-activerecord
我正在尝试获取连接表中不存在的所有记录的列表。
模型是 User、Game 和 MarkedGame,用户可以在其中将游戏标记为已玩。这是一个多对多的关系:
User > MarkedGame < Game
Run Code Online (Sandbox Code Playgroud)
我想是的,所有的游戏列表没有被打上了用户。
我知道我可以做两个单独的查询并减去它们:
Game.all - current_user.games
Run Code Online (Sandbox Code Playgroud)
但是我不喜欢这给我留下了一个数组而不是一个 Active Record 关系对象。另外,似乎应该有一种更高效的方式来做到这一点。
如果没有 Active Record 方法来处理这个问题,是否有 SQL 方法?我的原始 SQL 不是特别强大,因此将不胜感激。
谢谢。
您可以尝试以下操作:
Game.where.not(id: MarkedGame.where(user_id: current_user.id).pluck(:game_id))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |