Ação transação com Ruby On Rails
-
06-09-2019 - |
Pergunta
Eu tenho uma ação complexa dentro do controlador que executa várias consultas de atualização para o banco de dados.
Como posso fazer esta ação age como transação sem qualquer refatoração estrutural?
Solução
MyModel.transaction do
begin
@model.update_stuff
@sub_model.update_stuff
@sub_sub_model.update_stuff
rescue ActiveRecord::StatementInvalid # or whatever
# rollback is automatic, but if you want to do something additional,
# add it here
end
end
Aqui estão a documentação para o método transação.
Outras dicas
É possível fazer todas as ações em controlador transacional de uma vez com:
around_filter :transactional
def transactional
ActiveRecord::Base.transaction do
yield
end
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow