web-dev-qa-db-fra.com

Ruby Clause Activerecord IN

Je me demandais si quelqu'un savait comment faire une clause "IN" dans activerecord. Malheureusement, la clause "IN" est à peu près non googleable donc je dois poster ici. Fondamentalement, je veux répondre à une question comme celle-ci "Donnez-moi tous les étudiants qui se trouvent dans ces dortoirs où l'ID de dortoir est dans ce tableau [tableau d'ID]". Je sais comment écrire la requête en fonction d'un seul identifiant de dortoir, mais je ne sais pas comment le faire en fonction d'un tableau d'identifiants.

Toute aide est grandement appréciée. Je suis sûr que c'est une rediffusion d'une question quelque part, donc je vais supprimer cette fois une réponse/meilleur terme de recherche est trouvé.

63
Black Dynamite

De §2.3.3 Conditions de sous-ensemble des Rails Guides :

Si vous souhaitez rechercher des enregistrements à l'aide de l'expression IN, vous pouvez passer un tableau au hachage des conditions:

Client.where(:orders_count => [1,3,5])

Ce code va générer du SQL comme ceci:

SELECT * FROM clients WHERE (clients.orders_count IN (1,3,5))

Vous pouvez également utiliser la syntaxe arel :

Client.where(Client.arel_table[:order_count].in([1,3,5]))

Générera le même SQL

130
Chen Kinnrot