【发布时间】:2013-03-15 07:30:11
【问题描述】:
我在 Rails 控制台中工作。我想在两个不同的表中选择同名列的总和。
这是我的 ActiveRecord 代码:
Computer.joins(:services, :repairs)
.select("computers.id, SUM(services.cost) as SCOST, SUM(repairs.cost) as RCOST")
.group("computers.id")
这很好用,并返回以下正确的 SQL:
`SELECT computers.id, SUM(services.cost) as SCOST, SUM(repairs.cost) as RCOST
FROM "computers" INNER JOIN "services" ON "services"."computer_id" = "computers"."id"
INNER JOIN "repairs" ON "repairs"."computer_id" = "computers"."id"
GROUP BY computers.id `
但它在 Rails 控制台中给出以下结果:
=> [#<Computer id: 36>, #<Computer id: 32>]
难道我也不能访问我的 SUM 值吗?我在 postgres 中运行了上述 SQL 查询,它给出了所需的输出。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
您应该仍然可以访问总和。我认为 AR 只显示返回的列名及其值的列表。如果您将该查询分配给
computers,请尝试computers.first.SCOST -
我得到 NoMethodError: undefined method `SCOST'
-
我打算建议缩小别名,但有人已经回答了。你能试试吗?
-
我尝试简单地缩小别名,但这似乎对我的理解没有帮助。
标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord