Статья Ruby Activerecord IN
Мне было интересно, знает ли кто-нибудь, как сделать "IN" в activerecord. К сожалению, предложение "IN" довольно несовместимо, поэтому я должен публиковать здесь. В основном я хочу ответить на такой вопрос: "Дайте мне всех студентов колледжа, которые находятся в этих общежитиях, где id общежития находится в этом массиве [id array]". Я знаю, как написать запрос, учитывая один идентификатор общежития, но я не знаю, как это сделать, учитывая массив идентификаторов.
Любая помощь приветствуется. Я уверен, что это где-то репозиция вопроса, поэтому я удалю это, как только будет найден ответ/лучший поисковый запрос.
Ответы
Ответ 1
Из §2.3.3 Условия подмножества направляющих рельсов:
Если вы хотите найти записи, используя выражение IN
вы можете передать массив в хэш условий:
Client.where(:orders_count => [1,3,5])
Этот код будет генерировать SQL следующим образом:
SELECT * FROM clients WHERE (clients.orders_count IN (1,3,5))
Вы также можете использовать синтаксис arel:
Client.where(Client.arel_table[:order_count].in([1,3,5]))
Будет генерировать тот же SQL
Ответ 2
Вы также можете try-
array = [1,3,5]
Client.where(orders_count: array)