如何更新 Sequel 数据集的 updated_at 字段?

How to update updated_at field for a Sequel dataset?

我正在使用 Sequel gem 更新数据集。

如果您对模型实例进行更新,updated_at 时间戳会得到更新:

foo = Foo[id: 1]
foo.update(blah: blah)

但是,当您对数据集调用批量更新时,它不会更新每个条目的 updated_at 时间戳。

Foo.where(id: 1).update(blah: blah)

我查看了我已经在我的代码中使用的 Sequel docs regarding the timestamps plugin,但是 updated_at 字段仍然不会使用批量更新进行更新。有人可以帮我解决这个问题吗?

运行 Foo.where(id: 1).update(blah: blah) 对数据库执行单个查询,不会 运行 模型实例级挂钩。您可以单独更新每条记录:

Foo.where(id: 1).all{|f| f.update(blah: blah)}

或者您可以切换到基于数据库触发的方法,例如 https://github.com/jeremyevans/sequel_postgresql_triggers

您可以查看一个 update_all 函数。这是一种活动记录方法,因此它应该触发 updated_at.

更新:好吧,我刚刚检查了一下,它没有触发,你应该使用他的答案!