创建事务上的Rails

时间:2015-06-21 04:27:42

标签: ruby-on-rails devise transactions

在创建新用户时(在我的用户模型中)我也想创建一个条带客户。这两项行动只有在他们共同取得成功时才能完成(就像我不想要没有用户的客户,反之亦然)。出于这个原因,我认为将它们包装在一个事务中是个好主意。但是,我一定不能正确地做到这一点。我不相信我正确地覆盖了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

1 个答案:

答案 0 :(得分:2)

我已经对你的问题进行了一些研究,只要在失败的情况下引发异常,使用after_create似乎就可以了。这也将回滚交易。只需使用默认的回调。

Here is a good answer related to the question.