Proč místo výběru na základě jména a příjmení spojujete? Podvýběr bude mnohem méně výkonný než přímý dotaz. Celé jméno můžete získat pomocí select
rozsah (bude přístupný stejným způsobem jako ostatní atributy):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Aktualizace: Pokud opravdu potřebujete přepsat výše uvedený dotaz s podvýběrem v FROM
klauzule ActiveRecord, můžete provést následující:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Obecně platí, že do metod rozsahu ActiveRecord můžete vložit jakýkoli platný SQL, včetně select
, from
, atd.