Mengapa Anda menggabungkan alih-alih memilih berdasarkan nama depan dan belakang? Subpilihan akan jauh lebih sedikit kinerjanya daripada kueri langsung. Anda bisa mendapatkan nama lengkap menggunakan select
scope (dapat diakses dengan cara yang sama seperti atribut lainnya):
Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
where(first_name: 'Antonov', last_name: 'Kolganov')
Pembaruan: Jika Anda benar-benar perlu menulis ulang kueri di atas dengan subselect di FROM
klausa ke ActiveRecord, Anda dapat melakukan hal berikut:
Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
where(full_name: 'Anton Kolganov')
Yaitu, secara umum, Anda dapat memasukkan SQL apa pun yang valid ke dalam metode cakupan ActiveRecord, termasuk select
, from
, dll.