Dlaczego łączysz, zamiast wybierać na podstawie imienia i nazwiska? Podselekcja będzie znacznie mniej wydajna niż zapytanie bezpośrednie. Możesz uzyskać pełną nazwę za pomocą select
zakres (będzie dostępny tak samo jak inne atrybuty):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Aktualizacja: Jeśli naprawdę potrzebujesz przepisać powyższe zapytanie z podwyborem w FROM
klauzuli ActiveRecord, możesz wykonać następujące czynności:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Ogólnie rzecz biorąc, możesz umieścić dowolny poprawny kod SQL w metodach zakresu ActiveRecord, w tym select
, from
itp.