after_rollback:创建未触发

时间:2019-05-20 10:56:04

标签: ruby-on-rails ruby transactions

我有一个product表,我尝试在创建时运行after_commit和after_rollback。

控制器:

  product = Product.new form_params
  if product.save
    ...
  else
    ...
  end

型号:

  after_commit(on: :create) {
    ...
  }

  after_rollback(on: :create) {
    ...
  }

after_commit可以很好地工作,但是after_rollback不能与on: :create参数一起工作。当我删除on: :create参数时,它也会触发,但我需要after_rollback才能在创建时触发。

1 个答案:

答案 0 :(得分:1)

我认为您必须对它进行不同的定义...

  after_commit :after_commit_action, on: :create

  after_rollback :after_rollback_action, on: :create

  def after_commit_action
    # do your magic
  end

  def after_rollback_action
    # do your magic
  end