加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:56:20 所属栏目:MsSql教程 来源:网络整理
导读:在我的rails 4应用程序中,客户端(clients表)可以有很多项目(项目表)。我在每个表中都有一个名为name的列。我正在尝试编写一个连接,然后选择使用项目作为基表和客户端作为查找表。 client_id是projects表中的foreign_key: 我正在写我的查询如下: Project.j
在我的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读