Ruby on rails RubyonRails选择As不起作用

Ruby on rails RubyonRails选择As不起作用,ruby-on-rails,select,subquery,Ruby On Rails,Select,Subquery,我试图让Select As查询语句工作,但不断出现错误,不确定为什么它不工作。根据API文档,格式正确 User.select("firstname as fname") 结果: User Load (1.7ms) SELECT firstname as fname FROM "users" => #<ActiveRecord::Relation [#<User id: nil>, #<User id: nil>] 我得到: User Load

我试图让Select As查询语句工作,但不断出现错误,不确定为什么它不工作。根据API文档,格式正确

User.select("firstname as fname")
结果:

  User Load (1.7ms)  SELECT firstname as fname FROM "users"
 => #<ActiveRecord::Relation [#<User id: nil>, #<User id: nil>]
我得到:

  User Load (2.8ms)  SELECT "users"."firstname" FROM "users"
 => #<ActiveRecord::Relation [#<User id: nil, firstname: "John">, #<User id: nil, firstname: "Brian">,
因此,我可以从查询中看出为什么它不返回结果,但我不理解为什么它创建了错误的查询。我需要使用select as on的实际查询比这个查询更复杂,但我试图使用更简单的查询来找出它不能正常工作的原因

我需要使用select as查询的原因是,我有两个来自两个非常不同表的独立对象,需要将它们连接在一起并更改其中一个列名,以便按该列排序。我不确定在组合对象之前是否有更简单的方法来更改名称


谢谢

您可以在模型中使用alias_属性:firstname,:fname,然后在控制器中使用User.select:fname。

是否要将firstname字段更改为fname?是的,此查询仅使用sql select as语句的temp。不是永久性的,谢谢你。这是否也应该在控制台中工作?我正试图在控制台中使用它来测试它,但没有出现这样的列错误。请直接在应用程序中使用alias_属性。因此语法已切换,它应该是alias_属性:fname,:firstname。我让它在控制台中工作,但仍然存在相同的问题,当返回记录时,键仍然是原始列名,而不是别名:2.1.1:001>User.select:fname.whereid:1 User Load 0.5ms select users.firstname FROM users WHERE users.id=?[[id,1]]=>我不确定这是否清楚,但是返回的重新编码集使用firstname键,即使select语句使用了别名。我需要它在返回记录集时使用别名,我通常会使用SQL Select firstname as fname语句来执行此操作,但由于某些原因,它无法正常工作。是的,我希望避免对SQL语句进行硬编码。看来我没有别的选择了。仍然不确定为什么SQL Select as语句不起作用。似乎也找不到关于它的任何文档。
  User Load (2.8ms)  SELECT "users"."firstname" FROM "users"
 => #<ActiveRecord::Relation [#<User id: nil, firstname: "John">, #<User id: nil, firstname: "Brian">,