2013-09-24 74 views
0

我正在使用關聯將多個模型連接在一起並在單個查詢中選擇它們,但是當兩個模型共享列名稱時,只會使用select語句中的第二個。是否有任何方法使用完全限定的名稱,即以表名爲前綴,以便屬性哈希可以同時包含列值?具有表名稱的ActiveRecord屬性名稱

例子:

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

試試這個:

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

+1

HERP ..我怎麼沒想到呢?歡呼聲,將在3分鐘內接受 – Slicedpan