0
0

transactionの処理の流れについて調べてみた!

Posted at

Transactionとは

ChatGPT

トランザクション(Transaction)は、データベースにおける一連の操作をまとめて、それらがすべて成功することを保証するための仕組みです。トランザクションは、データベースの整合性を保つために非常に重要な役割を果たします。

railsにおけるTransactionについて調べてみた!

Railsでトランザクションを使用する場合は、トランザクションの範囲を
ActiveRecord::Base.transactionブロックで囲む必要がある。

ActiveRecord::Base.transaction do
  # ここに処理を書く
end

transactionブロック内で例外が発生した場合、ブロック内で行われたデータベース更新処理が全てロールバックされる。

注意点

transaction内でrescue句を書くとロールバックされない。
理由は、Railsに実装されているtransactionメソッドで、transactionブロックに対して例外が発生した場合に、rescueしてロールバックするという処理が実装されているため。

ActiveRecord::Base.transaction do
    user1.save
    raise 'error'
    user2.save
  rescue => e
    bar # 実行されるがuser1はロールバックは発動しない
  end

下記参照!
Github/transaction

まとめ

transactionの書き方を深く理解して使っていなかったので、勉強になりました!
時間がある時に他のメソッドも追ってみたいと思います!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0