activerecord найти все НЕ включенные в массив - PullRequest
36 голосов
/ 01 декабря 2010

У меня есть массив имен команд из другой части кода, и я хочу найти все команды, не входящие в этот массив. Я пробовал следующее, и оно не работает.

@team_exclude_list = ['Team 1', 'Team 2', 'Team 3']
@teams = Team.where("name != ?", @team_exclude_list)

Это в Rails 3, и Googles не дают мне много любви.

Ответы [ 2 ]

64 голосов
/ 14 ноября 2013

Решение Rails 4:

@team_exclude_list = ['Team 1', 'Team 2', 'Team 3']
@teams = Team.where.not(name: @team_exclude_list)

Также, чтобы ускорить запрос, вы можете:

  • создать индекс по имени

OR

  • изменить запрос на использование идентификаторов, которые проиндексированы по умолчанию
62 голосов
/ 01 декабря 2010

Я никогда не делал этого со строковым полем, но, возможно, это будет работать:

@teams = Team.where("name NOT IN (?)", @team_exclude_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...