【问题标题】:Update object, while retaining the update_at timestamp更新对象,同时保留 update_at 时间戳
【发布时间】:2014-11-26 16:50:34
【问题描述】:

我想更新对象的属性,但保持属性updated_at(DateTime 类型)不变。

这似乎不起作用,updated_at 获取当前日期/时间:

p = Post.first
p.update(updated_at: p.updated_at, published: true)

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0


【解决方案1】:

在这里提问和回答:Is there a way to avoid automatically updating Rails timestamp fields?

但简短的回答是使用 update_columnsi.e. user.update_columns(last_request_at: Time.current)

更多信息在这里:http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-update_column

【讨论】:

    【解决方案2】:

    只使用 update_all 方法,它不会触及 updated_at 字段 http://apidock.com/rails/ActiveRecord/Base/update_all/class

    【讨论】:

    • 这种方法的缺点是它不调用模型的验证。
    • 是的,但是 OP 只是更改了已发布的标志。在更复杂的情况下,最好避免使用这种方法。
    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 2017-09-20
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多