ActiveRecord属性名称与表名称

时间:2013-09-24 11:00:23

标签: ruby-on-rails rails-activerecord

我使用关联将多个模型连接在一起并在单个查询中选择它们,但是当两个模型共享一个列名时,只使用select语句中的第二个。有没有办法使用完全限定的名称,即以表名为前缀,以便属性哈希可以包含两个列值?

示例:

Class User < ActiveRecord::Base
  belongs_to :role
end

#This query will only allow me to see the name of the role
User.joins(:role).select('users.name', 'role.name')

#Using the raw connection removes the table name from the resultset also
User.connection.select("users.name, roles.name FROM users JOIN roles ON users.role_id = roles.id")

=> #<ActiveRecord::Result:0x00000000000000 @columns=["name", "name"], @rows=[["some_user", "admin"]]...

1 个答案:

答案 0 :(得分:1)

试试这个:

User.joins(:role).select('users.name as user_name, role.name as role_name')