0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Railsのトランザクション

Posted at

トランザクションとは

データの整合性を保証するための処理のこと。
途中で処理が失敗したらそれまで行った処理を元に戻す(ロールバック)。

例えば、銀行でAさんがBさんに1万円を送金するとする。
この場合、
①Aさんの口座から1万円を引く
②Bさんの口座に1万円を足す
という処理を行うが、もし②の処理が何らかの理由でエラーになった場合、トランザクションを使わなければ、Aさんがただ1万円を損しただけになってしまう。

トランザクションを使うと、②が失敗したら①の処理が元に戻るので最悪の事態は免れることができる。

Railsのトランザクションの書き方

ActiveRecord:Base.transactionを使う。

main_controller.rb
ActiveRecord::Base.transaction do
  実行したい処理
end

トランザクションの注意点

例外が発生しないとロールバックは行われないことに注意する。
save!やupdate!など破壊メソッドの処理で失敗すると例外が起きる。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?