質問

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
scroll top