1

我正面临以下问题,因为我是 ruby​​ on rails 的新手,而不是我无法完全理解 after_save 回调,所以卡住了

    class StoreOpeningStock < ActiveRecord::Base
     after_save :add_stock

     def add_stock
        s = Stock.find_by_product_id(self.product_id)
        if s.product_id?
        s.update_attributes(:product_id => self.product_id, :quantity => self.quantity, :price => self.price)
        else    
        Stock.create(:product_id => self.product_id, :quantity => self.quantity, :price => self.price)
  end
    end
    end

我将此视为错误

未定义的方法product_id

基本上只是检查 Stock 是否有产品?如果是.. 更新其他创建新库存.. 我觉得问题出在 s.product_id 上...但不确定..有关此主题的任何指导都会有很大帮助...提前致谢。

4

1 回答 1

3

我相信问题出在这段代码上:

if s.product_id?

可能是product_id?方法不存在,可能你想要的是这样的:

if s

这会根据您之前的查询检查s是否存在于您的数据库中。如果s为 nil,那么您将创建一条新记录。

于 2012-06-20T12:33:00.200 回答