如何更新 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.
更新:好吧,我刚刚检查了一下,它没有触发,你应该使用他的答案!
我正在使用 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.
更新:好吧,我刚刚检查了一下,它没有触发,你应该使用他的答案!