Action Transaction avec Ruby on Rails
-
06-09-2019 - |
Question
I ont une action complexe à l'intérieur de contrôleur qui effectue plusieurs requêtes de mise à jour de la base de données.
Comment puis-je faire cette action agit comme transaction sans refactoring structurelle?
La solution
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
Autres conseils
Il est possible de faire toutes les actions dans des transactions du contrôleur à la fois avec:
around_filter :transactional
def transactional
ActiveRecord::Base.transaction do
yield
end
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow