2013-10-09 26 views
0

在帶有postgres數據庫的rails 3.2.13中,如果任何列是別名,我的應用程序表中的一個表會給出錯誤。表列上的別名給出了未定義的方法錯誤

這隻發生在一張桌子上。這是最長的命名錶(如果相關)。在控制檯:

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

(當列名不表名作爲前綴非常相同的結果)

給出:

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

任何一列的任何別名在該表中產生同樣的錯誤。除非我使用列名作爲別名。例如。 「id as id」或「count(id)as id」是可以的。

請注意,雖然錯誤表示'nil:NilClass',但查詢確實返回了預期類型的​​對象,但它不響應別名。

+1

嘗試'MyEngine :: SpeciesValuation.select( 'my_engine_species_valuations.id爲IDA')第[ 「艾達」。 ' – usha

+0

將attr_accessor:ida添加到模型類會發生什麼? – davidfurber

+0

Vimsha,就是這樣。非常感謝。如果您添加答案,我可以接受 – rigyt

回答

1

錯誤告訴你MyEngine::SpeciesValuation.select('my_engine_species_valuations.id as ida').first沒有返回對象。你能粘貼生成的SQL嗎?

我只是嘗試類似的東西在我的項目之一,它工作得很好:

Photo.select("id as idp").first.idp 
    Photo Load (0.4ms) SELECT id as idp FROM "photos" LIMIT 1 
    => "c0f2d534-d16e-11e2-9443-28cfe9162c87" 
+0

錯誤是誤導。 Vimsha上面的第一條評論是有效的。 – rigyt

+0

哇。你正在運行什麼版本的Rails? –

+0

它是Rails版本3.2.13 – rigyt

相關問題