Waarom voeg je samen in plaats van te selecteren op voor- en achternaam? De subselect zal veel minder presteren dan directe query. Je zou de volledige naam kunnen krijgen met de select
scope (het zal op dezelfde manier toegankelijk zijn als andere attributen):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Bijwerken: Als je de bovenstaande query echt moet herschrijven met een subselect in de FROM
clausule toe aan ActiveRecord, kunt u het volgende doen:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
D.w.z. in het algemeen kunt u elke geldige SQL in de ActiveRecord-scope-methoden plaatsen, inclusief select
, from
, enz.