RoR 中有 update_all 方法

如果 update_all 失败,它会返回什么?它会引发异常吗?

例如:

ActiveRecord::Base.transaction do
  users = User.active
  users.update_all avatar: 'blablablb'
end

最佳答案

update_all 是许多跳过验证和回调的方法之一。因此,在调用 update_all 时,不会运行任何 ActiveRecord 验证。

但是,如果 update_all 调用不符合数据库级别的约束,或者以其他方式触发数据库中的异常,则 ActiveRecord 将抛出 ActiveRecord::StatementInvalid 异常并且会从 update_all 中断,而不返回任何其他异常值。

其他跳过验证的 ActiveRecord 方法包括:

  • 递减!
  • decrement_counter
  • 增量!
  • increment_counter
  • 切换!
  • 触摸
  • 更新属性
  • 更新列
  • 更新计数器
  • 关于ruby-on-rails - 当 update_all 失败时会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36971798/

    10-14 15:50
    查看更多