Railsでtransactionがrollbackしない
まんまこのブログに書いていることをそのままやっていた。
kossy-web-engineer.hatenablog.com
下の例のようにActiveRecord::Base.transaction
の中で例外を処理していたらそりゃロールバックは走りませんよね。
# だめな例 ActiveRecord::Base.transaction do # なんか処理 rescue Activerecord::RecordInvalid => e # 例外処理 end
良い例は次のような感じ。
# 良い例 begin ActiveRecord::Base.transaction do # なんか処理 end rescue Activerecord::RecordInvalid => e # 例外処理 end