表列上的别名给出了未定义的方法错误

时间:2013-10-09 20:27:39

标签: ruby-on-rails postgresql

在带有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 个答案:

答案 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"