209 votes

Combiner deux objets ActiveRecord::Relation

Supposons que je possède les deux objets suivants :

first_name_relation = User.where(:first_name => 'Tobias') # ActiveRecord::Relation
last_name_relation  = User.where(:last_name  => 'Fünke') # ActiveRecord::Relation

est-il possible de combiner les deux relations pour en produire une seule ? ActiveRecord::Relation contenant les deux conditions ?

Note : Je suis conscient que je peux enchaîner les wheres pour obtenir ce comportement, ce qui m'intéresse vraiment est le cas où j'ai deux ActiveRecord::Relation objets.

0 votes

0voto

William Frazier Points 11

En espérant que cela soit utile à quelqu'un d'autre, vous pouvez effectuer une deuxième requête pour trouver les correspondances par identifiant :

ids = last_name_relation.ids + first_name_relation.ids
User.where(id: ids)

Je réalise que ce n'est peut-être pas le plus efficace avec 3 demandes de base de données, mais cela fait l'affaire et c'est simple à comprendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X