Можно ли это сделать?наверное.Это должно быть сделано?вероятно, нет, иначе это было бы частью рельсов, или для этого уже была бы большая жемчужина.
Если у вас есть определенные сложные действия контроллера, которые выполняют много операций с БД, и вы хотите, чтобы они были в транзакции, я советую перенести эту бизнес-логику и постоянство в метод модели и поместить вашу транзакциютам.Это также дает вам больше контроля в тех случаях, когда вы не всегда хотите, чтобы это произошло.
Если вы действительно, действительно хотите сделать это в любом случае, я бы поспорил, что вы могли бы сделать это с промежуточным программным обеспечением Rack, как это (непроверенный) один https://gist.github.com/1477287:
# make this class in lib/transactional_requests.rb, and load it on start
require 'activerecord'
class TransactionalRequests
def initialize(app)
@app = app
end
def call(env)
ActiveRecord::Base.transaction do
@app.call(env)
end
end
end
# and in the app config
config.middleware.use "TransactionalRequest"