次のようなプロジェクションを作成する場合:
t = Arel::Table.new(:projects)
ps = t.project(t[:id].as(:snark))
:snark という名前の結果列を取得するにはどうすればよいですか?
次のようなプロジェクションを作成する場合:
t = Arel::Table.new(:projects)
ps = t.project(t[:id].as(:snark))
:snark という名前の結果列を取得するにはどうすればよいですか?
あなたは Arel Core を使用していて、アクティブなレコードではありません (将来的にはこれが好まれます) ので、エンジンの背後で何が起こっているのかを理解する必要があります。.each または .first のどちらを呼び出すかに応じて、Arel::Row(s) の配列または単一の Arel::Row (それぞれ) が返されます。
Arel::Row は、少なくとも 3 つの部分で構成されます。リレーション、ヘッダー、ボディ (タプル)。これらは関係代数の原則です。
t = Arel::Table.new(:projects)
ps = t.project(t[:id].as(:snark)).first
#should do the trick and return an Arel::Row
乾杯