Varför sammanfogar du istället för att välja utifrån för- och efternamn? Undervalet kommer att vara mycket sämre än direktfråga. Du kan få det fullständiga namnet genom att använda select
scope (det kommer att vara tillgängligt på samma sätt som andra attribut):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Uppdatering: Om du verkligen behövde skriva om ovanstående fråga med ett underval i FROM
till ActiveRecord kan du göra följande:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Dvs i allmänhet kan du lägga in valfri giltig SQL i ActiveRecord-omfångsmetoderna, inklusive select
, from
osv.