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

此表中任何列上的任何别名都会产生相同的错误。除非我使用列名作为别名。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吗?

我刚刚在我的一个项目中尝试了类似的东西,它工作得很好:

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 回答