内部联接选择多列
Inner joins selecting multiple columns
如果我提交
Role.select("roles.character, actors.lname AS actors_lname").joins(:actor)
它returns:
Role Load (0.0ms) SELECT roles.character, actors.lname AS actors_lname
FROM "roles" INNER JOIN "actors" ON "actors"."id" = "roles"."actor_id"
#<ActiveRecord::Relation [#<Role id: nil, character: "Ellis Boyd 'Red' Redding">,
#<Role id: nil, character: "Andy Dufresne">, #<Role id: nil, character: "Warden Norton">]>
为什么不显示 actors.lname 列?
使用select
.
Order.select("orders.id, customers.name").joins(:customers)
如果你为它们取别名,你可以获取关联的值
orders = Order.select("orders.id, customers.name AS customer_name").joins(:customers)
# you must call the method implicitly, or use .attributes
orders.first.customer_name
请注意,customer_name
的值不会出现在记录检查中。因此下面的代码
orders.first
在 IRB 中不会打印出属性。
如果我提交
Role.select("roles.character, actors.lname AS actors_lname").joins(:actor)
它returns:
Role Load (0.0ms) SELECT roles.character, actors.lname AS actors_lname
FROM "roles" INNER JOIN "actors" ON "actors"."id" = "roles"."actor_id"
#<ActiveRecord::Relation [#<Role id: nil, character: "Ellis Boyd 'Red' Redding">,
#<Role id: nil, character: "Andy Dufresne">, #<Role id: nil, character: "Warden Norton">]>
为什么不显示 actors.lname 列?
使用select
.
Order.select("orders.id, customers.name").joins(:customers)
如果你为它们取别名,你可以获取关联的值
orders = Order.select("orders.id, customers.name AS customer_name").joins(:customers)
# you must call the method implicitly, or use .attributes
orders.first.customer_name
请注意,customer_name
的值不会出现在记录检查中。因此下面的代码
orders.first
在 IRB 中不会打印出属性。