【问题标题】:How to update updated_at field for a Sequel dataset?如何更新 Sequel 数据集的 updated_at 字段?
【发布时间】:2016-03-03 19:03:25
【问题描述】:

我正在使用 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 字段仍然不会使用批量更新来更新。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: ruby sequel


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      更新:好的,我刚刚检查并没有触发,您应该使用他的答案!

      【讨论】:

        猜你喜欢
        • 2012-04-19
        • 1970-01-01
        • 2017-01-22
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多