我有大约25件物品留给代表product.stock = 25
的产品。假设我卖掉了这个特定产品的5个。然后,我需要将剩余的库存条目更新为25 - 5 = 20
或product.stock = product.stock - purchase.quantity
。
我如何在我的应用中执行此操作。我会将上面的代码放在控制器的某个地方吗?
我的购买表格符合以下要求:
我不确定我是否在这里明确或者主题是否与我的问题相关。
答案 0 :(得分:2)
我会使用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
验证,以确保存在足够的库存以满足订单。
答案 1 :(得分:0)
减少库存的方法应在产品型号
中实施 def decrement_stock(qty)
self.stock = self.stock - qty
self.save
end
在您的控制器中,您应该根据您的参数调用此方法。
purchase_controller.rb
def update
@product = Product.find(params[:id])
# Add validation to make sure you have any stock
@product.decrement_stock(params[:quantity])
# Add other things you need to do and return the @product
end
这是一个相当简化的版本。您实际上应该有订单模型,OrderLine模型和产品。