Подтвердить что ты не робот

Activerecord найти все НЕ включаемые в массив

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

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

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

4b9b3361

Ответ 1

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

@teams = Team.where("name NOT IN (?)", @team_exclude_list)

Ответ 2

Решение Rails 4:

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

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

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

ИЛИ

  • измените запрос на использование идентификаторов, индексированных по умолчанию.