在rails中一次保存多个表

any*_*acy 2 ruby ruby-on-rails rails-activerecord ruby-on-rails-4.1

我有一个动作,一次更新三个表,如下所示:

    def action_save
        @user.update(param_param_list1)
        @application.update(param_list2)
        @college.update(param_list3)
    end
Run Code Online (Sandbox Code Playgroud)

但为了使程序更好,我想要一次保存所有三个或根本不保存

spi*_*ann 7

使用ActiveRecord::Transaction:

def action_save
  @college.transaction do
    @user.update!(param_param_list1)
    @application.update!(param_list2)
    @college.update!(param_list3)
  end
end 
Run Code Online (Sandbox Code Playgroud)

事务确保执行该块中的所有数据库操作.或者如果有错误,则回滚整个事务.