在带有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”,但查询确实返回了预期类型的对象,但它只是不响应别名。
答案 0 :(得分: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"