有没有办法通过ActiveRecord获得实际的列名称?

当我调用find_by_sql或select_all with a join时,如果有同名的列,则会覆盖第一列:

select locations.*, s3_images.* from locations left join s3_images on s3_images.imageable_id = locations.id and s3_images.imageable_type = 'Location' limit 1

在上面的例子中,我得到了以下结果:

#<Location id: 22, name: ... 
>

其中id是最后一张s3_图像的id.select_rows( Select 行)是唯一按预期工作的功能:

Model.connection.select_rows("SELECT id,name FROM users") => [["1","amy"],["2","bob"],["3","cam"]]

我需要获取上面行的字段名.

ActiveRecord连接方法创建多个对象.我正在try 实现与"includes"返回相同的结果,但使用左连接.

我试图返回大量结果(有时是整张表),这就是为什么Include不适合我的需要.

推荐答案

Active Record提供了一个#column_names方法,该方法返回一个列名array.

用法示例:User.column_names

Ruby-on-rails相关问答推荐

安装特定版本的Ruby时出现问题(OpenSSL问题)

在URL中将下划线更改为连字符Ruby on Rails

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

复制我的活动时,活动描述没有复制过来

如何在哪里查询 Rails 模型中定义的方法

来自控制台的 ActionCable.server.broadcast

键入rails 控制台无法启动?

Rails 3 - Select 包含?

如何将实例变量传递给 RSpec 共享示例

如何在 to_json 中获取回形针图像的 url

rspec 共享示例与共享上下文

使用 ActiveRecord 3 / Arel 查找单个记录的最佳方法?

不带参数的 request.fullpath

Rails 成语避免在 has_many 中重复:通过

如何验证 ActiveRecord 中邮箱字段的格式?

Rails Active Admin css 与 Twitter Bootstrap css 冲突

如何使用 Ruby 在现有 PDF 上编辑或书写?

rake 任务中的 def 块

Rails:每个环境的初始化程序?

使用 Rspec 测试关联的正确方法?