ブロックなしでAR.transactionする
これができると、たとえば複数のrails consoleを立ち上げて両方でトランザクションを作り、任意のタイミングでDBにアクセスしたりコミットできたりしてトランザクションの挙動を調査するのに便利。
begin_db_transaction メソッドを使うと出来る。ドキュメントもあるので公開API
code:ruby
pry> ApplicationRecord.connection.begin_db_transaction
pry> u = User.find_by(name: name)
pry> u.update!(age: 42)
pry> ApplicationRecord.connection.commit_db_transaction
# rollbackもできる
pry> ApplicationRecord.connection.rollback_db_transaction
もしくはbinding.pryを使うこともできる。
code:ruby
pry> ApplicationRecord.transaction{binding.pry}
pry2> u = User.find_by(name: name)
pry2> ^D
pry> ...