2015-04-24 1 views
0

Я пытаюсь найти всех пользователей с двумя условиями. Их profile_type должен быть «Пациент», а не в blacklisted_idsактивный запрос записи с `where` и` not in`

blacklisted_ids = [1, 2, 3] 

User.where(profile_type: "Patient", id: not_in blacklisted_ids) 

следующие работы, но я хотел бы, чтобы он был один запрос, а не цепь. Существует много примеров только where и только where.not, но ни одного в одном запросе.

User.where(profile_type: 'Patient').where.not(id: blacklisted_ids) 
+0

возможно дубликат [Как выразить НЕ запрос с ActiveRecord/Rails?] (HTTP: // StackOverflow .com/вопросы/4307411/как-к-экспресс-а-не-в-запроса-с-ActiveRecord рельсов) –

ответ

0

Chained критерии (в данном случае) один запрос. Он переводится в один SQL-запрос. Если то, что вы хотите, чтобы синтаксически выразить это в одном завернутые где положение, то лучшее, что вы можете сделать, это

User.where("profile_type = 'Patient' and id not in (?)", blacklisted_ids) 
Смежные вопросы