miyohideの日記

技術的なメモなどを記しています

2023年6月2日

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