0

postgres データベースを使用する Rails 3.2.13 では、いずれかの列にエイリアスが設定されていると、アプリのテーブルの 1 つでエラーが発生します。

これは 1 つのテーブルでのみ発生します。これは、名前が最も長いテーブルです (関連する場合)。コンソールで:

MyEngine::SpeciesValuation.select('my_engine_species_valuations.id as ida').first.ida

(列名の前にテーブル名が付いていない場合とまったく同じ結果)

与えます:

*** NoMethodError Exception: undefined method `ida' for nil:NilClass

このテーブルの任意の列に別名があると、同じエラーが発生します。列名をエイリアス名として使用する場合を除きます。EG "id as id" または "count(id) as id" は問題ありません。

エラーには「nil:NilClass」と表示されますが、クエリは期待される型のオブジェクトを返しますが、エイリアス名に応答しないことに注意してください。

4

1 に答える 1

1

エラーはMyEngine::SpeciesValuation.select('my_engine_species_valuations.id as ida').first、オブジェクトが返されていないことを示しています。生成されたSQLを貼り付けてもらえますか?

私のプロジェクトの1つで似たようなことを試してみましたが、うまくいきます:

Photo.select("id as idp").first.idp
  Photo Load (0.4ms)  SELECT id as idp FROM "photos" LIMIT 1
  => "c0f2d534-d16e-11e2-9443-28cfe9162c87"
于 2013-10-10T05:54:53.540 に答える