Защо свързвате вместо да избирате въз основа на име и фамилия? Подизборът ще бъде много по-малко ефективен от директната заявка. Можете да получите пълното име, като използвате select
обхват (ще бъде достъпен по същия начин като другите атрибути):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Актуализация: Ако наистина трябва да пренапишете горната заявка с подизбор в FROM
клауза към ActiveRecord, можете да направите следното:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Т.е. като цяло можете да поставите всеки валиден SQL в методите на обхвата на ActiveRecord, включително select
, from
и т.н.