0
class SubJob
  field :total_qty
end

class Part

  belongs_to :sub_job
  after_save :update_inventory, if: ready_for_invoice
  after_save :update_total_qty

  def update_inventory
    # creating one more part2 
    part2 = Part.create(ready_for_invoice: false)
  end

  def update_total_qty
    # updating total qty on sub job
  end
end

当我创建p1 = Part.create它时,它也会创建part2对象。但它为part2子作业更新了两次数量。我已经检查了历史跟踪器的part2对象。它显示了两个历史跟踪器,但数据库上只有一个part2对象。任何帮助都会很棒。

4

1 回答 1

0

首先,我不是百分百了解你的错误/问题是什么,但我希望通过你的代码中发生的事情会有所帮助:

我假设 ready_for_invoice 默认为 true。

因此,您编码的内容是:

创建一个新部件,将 ready_for_invoice 设置为 true

p1 = Part.create

保存后,如果 ready_for_invoice = true (确实如此)

# run update_inventory first

创建一个新部分,将 ready_for_invoice 设置为 false

p2 = Part.create(ready_for_invoice: false)

保存 p2 后

# run update_total_qty (doing whatever that does)

保存 p1 后

# run update_total_qty (doing whatever that does)
于 2016-04-26T13:02:48.977 回答