我是新來的鐵軌。如何使用來自其他模型的值對記錄進行排名?
有這個問題。我有兩個型號客戶和訂單。 客戶 has_many 訂單和訂單 belongs_to 客戶。每個訂單都有一個貨幣值:成本。
現在我怎麼能通過總共成本對所有客戶進行排名?
非常感謝您的幫助!
我是新來的鐵軌。如何使用來自其他模型的值對記錄進行排名?
有這個問題。我有兩個型號客戶和訂單。 客戶 has_many 訂單和訂單 belongs_to 客戶。每個訂單都有一個貨幣值:成本。
現在我怎麼能通過總共成本對所有客戶進行排名?
非常感謝您的幫助!
,你可以這樣做下面
Customer.joins(:orders).select('customers.id, sum(orders.cost) as total_order_cost').order("total_order_cost")
使用order("total_order_cost desc")
如果你想按降序排列
謝謝!這對我有很大的幫助。返回多個記錄,我必須在最後添加'.group(「customers.id」)'。 – 2014-10-31 22:04:25
您需要使用分組來爲每個客戶完成訂單總計。然後您可以按總數排序。
http://guides.rubyonrails.org/active_record_querying.html#group有一個與您所做的相似的示例。
從理論上講,這可以在SQL來實現:每個'Customer'你獲取上確定的金額相關訂單中的字段以及該字段的順序。但它會很慢,這是肯定的。你有沒有考慮在**客戶模型中緩存總訂單成本**並按緩存值進行排序? – 2014-10-31 20:12:57
'Customer.joins(:orders).order('orders.cost desc')' – juanpastas 2014-10-31 20:16:17
大謝謝你們倆! – 2014-10-31 20:20:06