ルビーオンレールとの取引アクション
-
06-09-2019 - |
質問
Iデータベースにいくつかの更新クエリを実行するコントローラ内部の複雑な作用を有する。
どのように私はこのアクションを行うことができます。は任意の構造的なリファクタリングすることなく、トランザクションのような役割を果たし?
解決
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
ここでは、取引方法のドキュメントです。
他のヒント
これは、と一度にコントローラのトランザクション内のすべてのアクションを行うことが可能です。
around_filter :transactional
def transactional
ActiveRecord::Base.transaction do
yield
end
end
所属していません StackOverflow