Rails update_attributes 时,假如数据没变,其实他不会更新的吗

zhbinx · February 22, 2013 · Last by deathdealer replied at February 23, 2013 · 2307 hits

我有个定时监控的任务…… 大多时间他是正常的,就是 update_attributes 数据可能跟原始数据是相同的, 这时候我发现 updated_at 这个字段一直没变, 然后我一直以为是 rufus 没跑,搞的我很崩溃…… 刚才我突然改下数据不小心发现了这个情况。

请问大家,是这样的么……还是有一些其他的我不了解的逻辑

看看控制台产生的 sql 就能知道吧。

是的,会判断数据是不是 dirty 的,如果不是的话,就不会去写数据库。

见 ActiveRecord 的 Dirty 模块

我以前写了一个 before_save { xxxxx }。如果内容不变,这个回调无法生效。

而且,update_attributes 会触发校验。即使只改了 1 个属性,整个对象都要校验。

You need to Sign in before reply, if you don't have an account, please Sign up first.