2012-04-16 11 views
49

Me preguntaba si alguien sabía cómo hacer una cláusula "IN" en activerecord. Desafortunadamente, la cláusula "IN" es prácticamente imposible de googlear, así que tengo que publicarla aquí. Básicamente quiero responder a una pregunta como esta: "Dame todos los estudiantes universitarios que se encuentran en estos dormitorios donde el ID del dormitorio está en este conjunto [conjunto de identificación]". Sé cómo escribir la consulta dada una identificación de dormitorio individual, pero no sé cómo hacerlo dado una serie de identificadores.Ruby Activerecord IN cláusula

Cualquier ayuda es muy apreciada. Estoy seguro de que este es un reenvío de una pregunta en alguna parte, por lo que lo eliminaré una vez que se encuentre una respuesta/un término de búsqueda mejor.

Respuesta

105

De §2.3.3 Subset Conditions of the Rails Guides:

Si usted quiere encontrar registros utilizando la expresión IN puede pasar una matriz a las condiciones de hash:

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

Este código generará SQL como esto:

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

puede valer la pena los problemas que esto tiene con las matrices vacías. – tokland