2015-11-16 24 views
0

即使生成的SQL似乎正确,但我仍然无法从Rails Console获取正确的输出。我不知道我错过了什么。任何帮助,将不胜感激。在单个结果中返回Active列表中的两个和列

Orders.rb #Orders型号

scope :financials, -> {select(['SUM("orders"."totalCost") as "Cost"', 'sum("orders"."taxCost") as "tax"'])} 
scope :fulfillmentstatus, -> {select('"orders"."fulfillmentstatus"')} 
scope :byfulfillmentstatus, -> {group('"orders"."fulfillmentstatus"')} 

的Rails 4.1

在控制台

Order.fulfillmentstatus.financials.byfulfillmentstatus 

返回以下SQL

SELECT "orders"."fulfillmentstatus", SUM("orders"."totalCost") as "Cost", sum("orders"."taxCost") as "tax" FROM "orders" GROUP BY "orders"."fulfillmentstatus" 

结果哈希虽然已经

#<ActiveRecord::Relation 
[#<Order id: nil, fulfillmentstatus: "NEW">, 
#<Order id: nil, fulfillmentstatus: "WILL_NOT_DELIVER">, 
#<Order id: nil, fulfillmentstatus: "SHIPPED">, 
#<Order id: nil, fulfillmentstatus: "RETURNED">, 
#<Order id: nil, fulfillmentstatus: "DELIVERED">]> 

当我在对数据库中的Postgres运行SQL查询,我得到你所期望的三列

fulfillmentstatus,成本,税收

NEW,999.99,9999.99

是有可能在单个Activerecord结果中返回两个或多个sum,count,avg列/值,或者我误解了什么是活动记录?

+1

我觉得这是用ActiveRecord的检查的问题。如果你执行'Order.fulfillmentstatus.financials.byfulfillmentstatus.first [“Cost”]',你应该得到正确的值。尝试运行'to_json'来查看实际返回的查询:'Order.fulfillmentstatus.financials.byfulfillmentstatus.to_json' – AbM

+0

@AbM:是的,AR的'inspect'只包含表中的列,它不包含任何东西额外的你使用'select'设置。 –

回答

0

尝试 Order.pluck(:fulfillmentstatus,成本,技术:含税) 不知道它的工作原理与为(列在模型中未指定)

相关问题