我正在我的应用中构建一项功能来创建采购订单。我有经典的表purchase_orders和purchase_order_lists。
purchase_order有许多purchase_order_lists和purchase_order_lists belongs_to purchase_order。外键位于purchase_orders表的PURCHASE_ORDER列上。数据库表名称是大写。
在我的purchase_orders
控制器中,我有:
def show
@purchase_order = PurchaseOrder.find(params[:ID])
@purchase_order_list = PurchaseOrderList.find(params[:ID])
end
在我的模型buy_oder_list.rb
中def total
(self.UNITS * self.PRICEBUY)
end
在我看来purchase_orders/show
<td><%= purchase_order_list.total %></td>
返回每个采购订单列表行的正确值。
然后在同一视图中显示总数:
@purchase_order_list.to_a.sum(&:total)
应显示方法total
的总和,但会引发错误
Couldn't find PurchaseOrderList with 'ID'=POID-00001
因为它正在寻找采购订单清单ID中的采购订单ID。
如何修复它以返回特定采购订单的方法total
的总和?
答案 0 :(得分:1)
问题是我使用find
,而一个采购订单有很多purchase_order_lists。
要修复我使用where
代替:
@purchase_order_list = PurchaseOrderList.where(PURCHASE_ORDER: params[:ID])