我有个定时监控的任务…… 大多时间他是正常的,就是 update_attributes 数据可能跟原始数据是相同的, 这时候我发现 updated_at 这个字段一直没变, 然后我一直以为是 rufus 没跑,搞的我很崩溃…… 刚才我突然改下数据不小心发现了这个情况。
请问大家,是这样的么……还是有一些其他的我不了解的逻辑
看看控制台产生的 sql 就能知道吧。
是的,会判断数据是不是 dirty 的,如果不是的话,就不会去写数据库。
见 ActiveRecord 的 Dirty 模块
我以前写了一个 before_save { xxxxx }。如果内容不变,这个回调无法生效。
而且,update_attributes 会触发校验。即使只改了 1 个属性,整个对象都要校验。