代码之家  ›  专栏  ›  技术社区  ›  ideasasylum

“触摸”更新了Rails 2.3.2中的列

  •  30
  • ideasasylum  · 技术社区  · 15 年前

    我有一个过程,它迭代一系列的ActiveRecord模型,进行一些处理,然后再次保存模型。但是,通常情况下,处理不会导致属性发生更改,因此 updated_at 列从不更改(即使调用了save)。

    我不希望禁用部分更新(一般来说,它们很有用)。我想我的两个选择是:

    1. 向模型中添加单独的时间戳列(即' processed_at ')并自己管理,尽管这看起来有点浪费/多余。
    2. 或者以某种方式超越 更新的AT 属性?

    我听说Rails3将有一个“触摸”方法,这正是我要找的。

    有什么想法/选择/意见吗?

    2 回复  |  直到 12 年前
        1
  •  52
  •   John Topley    15 年前

    事实上 touch 方法已经在Rails 2.3.x中,因此您可以简单地执行以下操作:

    model.touch
    

    更新 updated_at 列。或者,要使用当前日期和时间更新某些其他列,请执行以下操作:

    model.touch(:column_name)
    
        2
  •  1
  •   Jonathan    12 年前

    既然2.3.x线已经来了又走了,一个更明确的答案是触摸直到 2.3.8 . 因此,任何使用Rails2.3.2的用户(正如操作系统以前——现在我也是这样)都需要找到另一种方式来“触摸”他们的记录。