आप पहले और अंतिम नाम के आधार पर चयन करने के बजाय एक दूसरे से क्यों जुड़ते हैं? उप-चयन प्रत्यक्ष क्वेरी की तुलना में बहुत कम प्रदर्शनकारी होगा। आप 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
, आदि.