2015-11-16 25 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,成本,技術:含稅) 不知道它的工作原理與爲(列在模型中未指定)

相關問題