トランザクション
class TestController < ApplicationController def index ActiveRecord::Base.transaction do company = Company.create(name: 'test') raise ActiveRecord::Rollback end end end
トランザクションを使用すると
の中のraise ActiveRecord::Rollbackの部分が動作するとデータベースのデータがActiveRecord::Base.transaction doの前の状態に戻ります。
トランザクションは同一のコントローラー内で複数のモデルの操作などを行うときに使用し、例外などの中にraise ActiveRecord::Rollbackを記入しておくことで不都合が起きた時にActiveRecord::Base.transaction do内のすべてのデータベースの変更を取り消すことができます。
ActiveRecord::Base.transaction do
raise ActiveRecord::Rollback
end
raise ActiveRecord::Rollback
end
の中のraise ActiveRecord::Rollbackの部分が動作するとデータベースのデータがActiveRecord::Base.transaction doの前の状態に戻ります。
トランザクションは同一のコントローラー内で複数のモデルの操作などを行うときに使用し、例外などの中にraise ActiveRecord::Rollbackを記入しておくことで不都合が起きた時にActiveRecord::Base.transaction do内のすべてのデータベースの変更を取り消すことができます。