Rails创建事务

sol*_*man 5 transactions ruby-on-rails devise

在创建新用户(在我的用户模型中)时,我也想创建一个条带客户.只有当他们一起成功时才能完成这两项行动(就像我不希望没有用户的客户,反之亦然).出于这个原因,我认为将它们包装在一个事务中是个好主意.但是,我一定不能正确地做到这一点.我不相信我正确地覆盖了create方法.如果有人有一个建议作为更好的方式来做到这一点或我做错了,将不胜感激.谢谢!

  def create
    User.transaction do
      super
      create_stripe_customer(self)
    end
  end

  def destroy
    User.transaction do
      super
      delete_stripe_customer(self)
    end
  end
Run Code Online (Sandbox Code Playgroud)

nes*_*eka 2

我对你的问题做了一些研究,只要失败时引发异常,使用 after_create 似乎就可以了。这也将回滚事务。只需使用默认回调即可。

这是与该问题相关的一个很好的答案。