ActiveRecord で rollback
Rails 2.0.2 から、ActiveRecord のトランザクション中にマニュアルでrollbackできるようになったらしい。
2.0.2 より前
transaction中に例外を発生させることで明示的にrollbackしていたが、、
begin
transaction do
david.withdrawal(100)
mary.deposit(100)
raise # rollback !!
end
rescue
# 後始末。
end
raiseした例外はrescueしなくちゃいけなかった。
2.0.2 以降
transaction do
david.withdrawal(100)
mary.deposit(100)
raise ActiveRecord::Rollback # rolls back the transaction that was otherwise going to be successful
end
raise ActiveRecord::Rollback で明示的にロールバックされて、トランザクションが静かに終了する。