2017-08-24 1 views
0

Ich möchte eine solche Abfrage für meine Services Active in Rails machen:Wie mache ich SQL-Abfrage in ActiveRecord mit Alias ​​für die Tabelle?

SELECT * 
FROM "services" AS s 
WHERE /* part using 's' alias */ 

Normalerweise würde ich nur Service.where(/* where part */) schreiben, aber ich brauche, um meine Alias ​​zu setzen.

Ich habe versucht, ActiveRecord::Base.connection.execute(query) ausführen, aber das Ergebnis davon wird nicht als Service erkannt.

Wie kann ich damit umgehen?

Antwort

0

Zum Glück habe ich beim Schreiben dieser Frage eine Lösung gefunden. Service.find_by_sql(query) funktioniert in meinem Fall gut.

1

Um eine Tabelle alias kombinieren die select Methode mit from verwenden:

Service.select("s.*").from("services s") 

Welche dieser SQL erzeugt:

SELECT s.* FROM services s 

Und es gibt ein ActiveRecord::Relation, die Sie verfeinern können je nach Bedarf.

Verwandte Themen