Looking at the implementation of transaction
block in active record, you should do something like:
class API < Grape::API
before do
ActiveRecord::Base.connection.begin_transaction
end
after do
begin
ActiveRecord::Base.connection.commit_transaction unless @error
rescue Exception
ActiveRecord::Base.connection.rollback_transaction
raise
end
end
rescue_from :all do |e|
@error = e
ActiveRecord::Base.connection.rollback_transaction
# handle exception...
end
end