アクティブレコードでのトランザクション

昨日はSQLでのトランザクションについて書いたので、

今日はアクティブレコードでのトランザクションについて調べてみました!

 

 

書き方

 以下のように書くことができます。

① モデル.transaction do
② DBに変更を加える(updateやdeleteなど)

③ end

④ 上手くいった場合の処理

⑤  rescue => e

⑥  失敗した場合の処理

例外が時発生した場合にROLLBACKが発生するので、

モデル.transaction do ~ endの中の処理は例外を発生させるように書かないといけないようです。

(saveじゃなくてsave!とかく)

 

 

感想その他

アクティブレコードでのトランザクションは例外処理とセットになっているため、

モデル.transaction do ~ endの中の処理で例外を発生させるように書くことを気をつけなくてはと思いました。