Hvorfor sammenkæder du i stedet for at vælge baseret på for- og efternavn? Undervalget vil være meget mindre effektivt end direkte forespørgsel. Du kan få det fulde navn ved at bruge select
omfang (det vil være tilgængeligt på samme måde som andre attributter):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Opdatering: Hvis du virkelig havde brug for at omskrive ovenstående forespørgsel med et undervalg i FROM
klausul til ActiveRecord, kan du gøre følgende:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Det vil sige, generelt kan du indsætte enhver gyldig SQL i ActiveRecord-omfangsmetoderne, inklusive select
, from
osv.