sql – ActiveRecord连接查询并在Rails中选择

前端之家收集整理的这篇文章主要介绍了sql – ActiveRecord连接查询并在Rails中选择前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的rails 4应用程序中,客户端(clients表)可以有很多项目(项目表)。我在每个表中都有一个名为name的列。我正在尝试编写一个连接,然后选择使用项目作为基表和客户端作为查找表。 client_id是projects表中的foreign_key:

我正在写我的查询如下:

Project.joins(:client).select('projects.id,projects.name,clients.name')

我得到以下回应:

Project Load (0.6ms)  SELECT projects.id,clients.name FROM "projects" INNER JOIN "clients" ON "clients"."id" = "projects"."client_id"
=> #<ActiveRecord::Relation [#<Project id: 1,name: "Fantastico Client">]>

如果我尝试别名如下:

Project.joins(:client).select('projects.id,clients.name as client_name')

然后我得到以下回应:

Project Load (0.8ms)  SELECT projects.id,clients.name as client_name FROM "projects" INNER JOIN "clients" ON "clients"."id" = "projects"."client_id"
=> #<ActiveRecord::Relation [#<Project id: 1,name: "The Dream Project">]>

在任何一种情况下,ActiveRecord都会丢失其中一个名称,您可以从上述响应中看到。我该怎么写这个查询

解决方法

如果select中的列不是调用select的模型的属性之一,那么这些列不会显示。所有这些属性仍然包含在AR :: Relation中的对象中,并且可以作为任何其他公共实例属性访问。

您可以通过调用first.client_name来验证这一点:

Project.joins(:client)
       .select('projects.id,clients.name as client_name')
       .first.client_name

猜你在找的MsSQL相关文章