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

zhbinx · 2013年02月22日 · 最后由 deathdealer 回复于 2013年02月23日 · 2280 次阅读

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

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

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

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

见 ActiveRecord 的 Dirty 模块

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

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号