为什么ActiveRecord提供.delete_all而不是.truncate?

Sea*_*ere 10 activerecord ruby-on-rails

我必须手动执行SQL才能使用TRUNCATE命令,这似乎很奇怪.DHH是否保护我免受伤害?

Mit*_*sey 10

使用TRUNCATE在某些数据库不运行触发器.使用DELETE的每一行仍然会运行触发器.TRUNCATE也无法回滚,因此如果您.destroy_all在事务中执行了操作,即使您尝试回滚,它也会清除所有数据.

所以,是的,你受到保护免受截断的影响.