Как я могу объединить два запроса? - PullRequest
0 голосов
/ 21 января 2012

Я делаю запрос к таблице:

@answears = Answear.where("round_id = ? AND group_id <> ? AND value <> 'HIGHNOON'", @round.id, @group.id

который работает, возвращая то, что я хочу. Но в другом месте есть еще один запрос:

@answears = Answear.where(:group_id => [1, 3, 5]) 

, который тоже работает.

Как я могу объединить эти два в одном?

Ответы [ 2 ]

1 голос
/ 21 января 2012

Вы можете просто связать их.

Answear.where("round_id = ? AND group_id <> ? AND value <> 'HIGHNOON'", @round.id, @group.id).where(:group_id => [1, 3, 5])

Две ноты, которые вы можете рассмотреть:

  1. Таким образом, у вас в запросе group_id дважды. Было бы разумнее просто убедиться, что @group.id не входит в массив идентификаторов групп, которые вы передаете методу where.
  2. Ответ не слово. Вы, вероятно, должны назвать свою модель Ответ.
0 голосов
/ 21 января 2012

использовать IN (?) со значением массива:

@answears = Answear.where("round_id = ? AND group_id IN (?) AND value <> 'HIGHNOON'", @round.id, [1, 3, 5])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...