Запрос для всех пользователей, кроме пользователей с идентификатором в этой коллекции - PullRequest
3 голосов
/ 11 июля 2010

Я пытаюсь найти всех пользователей, кроме пользователей с идентификатором, который является членом массива exclude_ids

Вот что я имею:

User.where("id != ?", exclude_ids)

Это работает толькокогда exclude_ids имеет только 1 элемент.Если в нем более одного элемента, я получаю

эту ошибку:

ActiveRecord::StatementInvalid: SQLite3::SQLException: near ",": syntax error: SELECT     "users".* FROM       "users" WHERE     (id != 1,2)

Буду признателен за любую помощь.

Ответы [ 3 ]

5 голосов
/ 11 июля 2010

Я не использовал Rails 3, но использовать User.where("id in #{exclude_ids} ?").

на Rails 2.x небезопасно, вы делаете это следующим образом

User.find(:all, :conditions => ["id NOT IN (?)", [1,2,3]])

Rails 3.x документы http://railsapi.com/doc/rails-v3.0.0.beta.3/classes/ActiveRecord/Base.html

2 голосов
/ 13 марта 2014
User.where('id NOT IN (:ids)', ids: exclude_ids)  # SQL does the filtering

или

User.select { |u| exclude_ids.exclude? u.id }  # Ruby does the filtering
0 голосов
/ 11 июля 2010

Я не подтверждаю, но вы можете попробовать это

User.where ("id not in # {exclude_ids}?")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...