当我有要更新其属性的 id 列表时,updated_at
数据库中的字段似乎没有改变,这就是我的意思:
ids = [2,4,51,124,33]
MyObj.where(:id => ids).update_all(:closed => true)
执行此更新后,updated_at
字段不会更改。但是,当我进入 rails 控制台rails c
并执行此操作时:
obj = MyObj.find(2)
obj.closed = false;
obj.save!
在此语句updated_at
字段更改值之后。为什么是这样?我在我的应用程序中依赖这个updated_at
字段,因为我正在收听更新并在发生这种情况时执行整个应用程序流程?
编辑
我刚刚从dax
答案中发现:
Timestamps
Note that ActiveRecord will not update the timestamp fields (updated_at/updated_on) when using update_all().
我不想一次更新一条记录,有没有办法解决这个问题?不诉诸于sql级别?