8
votes

Rails 3 Activerecord: Union

Y a-t-il un moyen d'utiliser MySQL Union dans Rails 3?


0 commentaires

4 Réponses :


3
votes
Model.find_by_sql("your union query")

0 commentaires

11
votes

Je pense que la seule façon dont vous allez obtenir cela pour travailler en exécutant directement la requête.

MyModel.find_by_sql("...")


0 commentaires

0
votes

Comme vous pouvez le lire sur ce fil, des personnes travaillent sur une meilleure solution pour la création de requêtes de l'Union dans des rails:

https://github.com/rail/arel/pull/118 < / p>

Entre-temps, j'ai écrit un petit hack avec lequel vous pourrez créer des requêtes syndicales simples et faire des filtres avec des commandes distinctes et limites:

http://coderwall.com/p/9Hohaa


0 commentaires

5
votes

J'ai trouvé un hack soigné à l'aide de Select. Par exemple, si vous souhaitez faire un syndicat entre l'utilisateur et le renforçateur d'autres.

"SELECT id from other_users union select id FROM users " 


1 commentaires

C'est ce que j'ai appelé génial, mais juste pour avertir certaines personnes qui feraient une erreur comme ce que j'ai déjà fait. Par défaut, lorsque vous faites avec pure SQL, il devrait être (Sélectionnez ID d'autre_users) Union (sélectionnez ID d'utilisateurs); Lorsque vous le prenez à des rails, n'écrivez pas comme user.select ("(ID d'autres_users) Union (SELECT ID)") car il générera SELECT (ID d'autre_users) Union (sélectionnez ID) à partir des utilisateurs