如何在Rails中使用`after_update'回调?

时间:2018-11-20 12:11:43

标签: ruby-on-rails callback

我想对一个方法使用after_update回调方法,该方法将更新购物车应用程序中产品的库存。控制器中的代码为: ProductsController.rb:

  def update
     order = current_order
     @order_item = order.order_items.find(params[:id])
     @order_item.product.save
 end

在ProudctModel中:

 after_update :remove_stock
 def remove_stock
   puts "this is #{order_items}"
   order_items.collect do |oi|
       puts "this is product id: #{oi.product.id}"

   end
 end

但是,在运行上述日志时,日志如下:

order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1
order items product: 1

为什么当order_item中只有一种产品时,为什么显示这么多product_id?

PS:我的关联如下:

产品has_many order_items

order_items属于订单

订单has_many order_items

我想念什么? 请帮忙。 谢谢。

1 个答案:

答案 0 :(得分:0)

 after_update :remove_stock
 def remove_stock
   puts "this is product id: #{self.id}"
 end

由于您属于产品模型本身,因此可以访问产品对象