LoginSignup
6
8

More than 5 years have passed since last update.

ActiveRecordのtransactionメソッドはModelのインスタンスメソッドとしても呼び出せる

Last updated at Posted at 2015-03-09

実は僕も最近知ったんですが、知らない人も多いようなので情報共有します。

ActiveRecordでトランザクションをかける場合のサンプルコードはこういう書き方になっていることが多いです。

ActiveRecord::Base.transaction do
  david.withdrawal(100)
  mary.deposit(100)
end

# もしくは

Account.transaction do
  balance.save!
  account.save!
end

あたかもtransactionメソッドはクラスメソッドとして呼び出す方法しかないように見えますが、実はインスタンスメソッドとして呼び出すことも可能です。

balance.transaction do
  balance.save!
  account.save!
end

みなさんご存知でしたか?
知らなかった人は「ストックする」ボタンをクリック!(怪しい宣伝っぽい)

参考情報

上記サンプルコードは公式ドキュメントから拝借したものです。

6
8
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
6
8