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列/值,或者我误解了什么是活动记录?
我觉得这是用ActiveRecord的检查的问题。如果你执行'Order.fulfillmentstatus.financials.byfulfillmentstatus.first [“Cost”]',你应该得到正确的值。尝试运行'to_json'来查看实际返回的查询:'Order.fulfillmentstatus.financials.byfulfillmentstatus.to_json' – AbM
@AbM:是的,AR的'inspect'只包含表中的列,它不包含任何东西额外的你使用'select'设置。 –