姓名に基づいて選択するのではなく、なぜ連結するのですか?副選択は、直接クエリよりもパフォーマンスが大幅に低下します。 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')
つまり、一般的に、select
を含む、任意の有効なSQLをActiveRecordスコープメソッドに入れることができます。 、from
、など。