我有一段代码可以创建db记录,但也可以处理Dwolla事务。我希望这是全有或全无。如果事务块中的任何行引发异常,前两行(活动记录行)是否会回滚?请注意,整个事情都包含在开始/救援/结束中,但我只关心这一点。
User.transaction do
user.save!
record.save!
transactionId = Dwolla::Transactions.send({:destinationId => user.dwolla_id, :amount => amount, :pin => DwollaTransaction.get_dwolla_pin})
transac = DwollaTransaction.create(user_id: user.id, transaction_id: transactionId, amount: amount)
end
感谢您的任何见解。基本上,我想确保如果外部API调用失败,我们的内部记录永远不会被保存。
答案 0 :(得分:0)
是的,只要他们在失败时实际引发异常,就会回滚数据库事务,并且不会将save!
提交给数据库。