【发布时间】:2020-03-05 20:50:24
【问题描述】:
当我有想要更新其属性的 ID 列表时,数据库中的 updated_at 字段似乎没有改变,这就是我的意思:
ids = [2,4,51,124,33]
MyObj.where(:id => ids).update_all(:closed => true)
执行此更新后,updated_at 字段不会更改。但是,当我使用 rails c 进入 rails 控制台并执行此操作时:
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级别?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3