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