保存回叫后的Mongoid运行两次

时间:2016-04-23 12:47:39

标签: mongodb mongoid mongoid4

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对象的历史跟踪器。它显示了两个历史记录跟踪器,但在db上只显示了一个part2对象。任何帮助都会很棒。

1 个答案:

答案 0 :(得分: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)