我还剩下大约 25 件产品,表示为 product.stock = 25
。假设我卖出了 5 件该特定产品。然后,我需要将其剩余库存条目更新为 25 - 5 = 20
或 product.stock = Product.stock - buy.quantity
。
我将如何在我的应用程序中执行此操作。我可以将上面的代码放在 Controller 中的某个位置吗?
我有一个满足以下要求的采购表格:
- 能够选择现有产品,检索产品的价格
- 指定用户想要购买的数量
- 显示总计以及选择购买的所有产品的总计
我不确定我在这里是否表达清楚,或者该主题是否与我的问题相关。
请您参考如下方法:
我会使用 ActiveRecord 的 decrement!方法:
product.decrement!(:stock, purchase.quantity)
如果购买模型是跟踪最终销售的模型,那么我会将此代码放入 ActiveRecord 回调中。例如:
class Purchase < ActiveRecord::Base
belongs_to :product
after_create :adjust_inventory
def adjust_inventory
product.decrement!(:stock, quantity)
end
end
购买还应该有一个 before_save
验证,以确保有足够的库存来满足订单。