実は僕も最近知ったんですが、知らない人も多いようなので情報共有します。
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
みなさんご存知でしたか?
知らなかった人は「ストックする」ボタンをクリック!(怪しい宣伝っぽい)
参考情報
上記サンプルコードは公式ドキュメントから拝借したものです。