Арель сложный запрос - PullRequest
       2

Арель сложный запрос

1 голос
/ 21 ноября 2011

Итак, у меня есть следующие таблицы

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, но я бы лучше выучил верный путь.

1 Ответ

1 голос
/ 21 ноября 2011

Используя meta_where gem:

Game.joins(:player0, :player1).where((:player0 => {:user => {:race => 'x'} | {:race => 'y'}}) | (:player1 => {:user => {:race => 'x'} | {:race => 'y'}}))

Проверьте это с помощью метода to_sql.

...