我有一個專案的Campaign模型has_many。
每個專案都有:quantity和:price
我想計算活動的總價。
我試過這個但不會作業。
def campaign_subtotal(campaign)
return campaign.items.sum(item.price * item.quantity)
end
這是如何處理的?
非常感謝
uj5u.com熱心網友回復:
天真的實作是:
class Campaign < ApplicationRecord
has_many :items
def subtotal
items.sum { |item| item.price * item.quantity }
end
end
你有點接近,但你需要傳遞一個塊來計算每項的總和。使它成為實體方法而不是幫助程式也更有意義。
然而,如果你想在資料庫查詢中使用小計,或者你想有效地顯示一堆活動,你會想在 SQL 中使用子查詢、視窗查詢或橫向連接來計算它。您還應該考慮記錄每行的價格(小計),而不是一直重新計算。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534555.html
