Warum verketten Sie, anstatt anhand des Vor- und Nachnamens auszuwählen? Die Unterauswahl ist viel weniger leistungsfähig als die direkte Abfrage. Sie können den vollständigen Namen mit select
erhalten Gültigkeitsbereich (es wird auf die gleiche Weise wie andere Attribute zugänglich sein):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Aktualisierung: Wenn Sie die obige Abfrage wirklich mit einer Unterauswahl im FROM
umschreiben müssten -Klausel zu ActiveRecord können Sie Folgendes tun:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Das heißt, im Allgemeinen können Sie jedes gültige SQL in die Methoden des ActiveRecord-Bereichs einfügen, einschließlich select
, from
usw.