In the ActionController docs there is a snippet about wrapping controller actions in a database transaction.
class ChangesController < ApplicationController
around_action :wrap_in_transaction, only: :show
private
def wrap_in_transaction
ActiveRecord::Base.transaction do
begin
yield
ensure
raise ActiveRecord::Rollback
end
end
end
end
Now that multiple databases is supported in Rails and the toggling of the primary/replica is done in a middleware based on the HTTP verb, I wanted to propose a similar pattern for supporting transactions when the HTTP verb is used to mutate date. I was thinking this would be an optional middleware that can be configured to be on or off. Thoughts?