Perché concateni invece di selezionare in base al nome e al cognome? La sottoselezione sarà molto meno performante della query diretta. Puoi ottenere il nome completo usando il select
scope (sarà accessibile allo stesso modo degli altri attributi):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Aggiornamento: Se hai davvero bisogno di riscrivere la query di cui sopra con una sottoselezione nel FROM
clausola su ActiveRecord, puoi fare quanto segue:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Cioè, in generale, puoi inserire qualsiasi SQL valido nei metodi dell'ambito di ActiveRecord, incluso select
, from
, ecc.