代码之家  ›  专栏  ›  技术社区  ›  Bogdan Gusiev

Ruby on Rails的事务操作

  •  5
  • Bogdan Gusiev  · 技术社区  · 15 年前

    我在控制器内部有一个复杂的操作,可以对数据库执行多个更新查询。

    我怎么做这个动作 像交易一样 没有任何结构重构?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Sarah Mei    15 年前
    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
    

    这里是 the docs for the transaction method .

        2
  •  5
  •   Bogdan Gusiev    12 年前

    可以同时在控制器中执行所有操作,包括:

    around_filter :transactional
    
    def transactional
      ActiveRecord::Base.transaction do
        yield
      end
    end