所以我有以下表格
class Game
belongs_to :player0, :class => "Player"
belongs_to :player1, :class => "Player"
end
class Player
belongs_to :user
end
class User
#has a field called race
end
现在我需要一个查询来执行以下操作
查找所有其中player0.user.race为“x”且player1.user.race为“y”的游戏或者player0.user.race为“y”且player1.user.race为“x”。
我刚刚开始使用rails 3.我可以在sql中轻松编写查询,但我宁愿学习arel方式。
答案 0 :(得分:1)
使用meta_where gem:
Game.joins(:player0, :player1).where((:player0 => {:user => {:race => 'x'} | {:race => 'y'}}) | (:player1 => {:user => {:race => 'x'} | {:race => 'y'}}))
使用to_sql
方法检查它。