Aunque el uso de SQL modificable según lo sugerido por DanneManne con mayor frecuencia funcionará, y es probablemente la forma en que desearía ir, no es necesariamente composable. Tan pronto como haya codificado un nombre de tabla, puede tener problemas para combinarlo en otras consultas donde ActiveRecord puede decidir alias de la tabla.
Así, a costa de cierta complejidad adicional, podemos resolver esta utilizando algún Arel de la siguiente manera:
f = Friend.arel_table
User.
where(:id=>f.project(:user_id).where(f[:name].eq('Joe'))).
where(:id=>f.project(:user_id).where(f[:name].eq('Jack')))
Esto utilizará un par de sub consultas para hacer el trabajo.
Estoy bastante seguro de que hay una solución de ARel utilizando combinaciones también, pero puedo encontrar la forma de redactar esa consulta en ARel, pero no cómo usar esa consulta como base para una consulta ActiveRecord para volver Instancias de modelo de usuario.
Disculpa, no leí tu pregunta con cuidado ... eliminé mi respuesta incorrecta. – Mischa
@muistooshort reemplazando o por y no funciona –
Ha malinterpretado mi corrección al malentendido de Mischa, nuestros comentarios decían lo mismo. –