在Rails 2.3.2中“触摸”updated_at列

时间:2009-07-07 09:37:48

标签: ruby-on-rails timestamp

我有一个循环遍历一堆ActiveRecord模型,进行一些处理并再次保存模型的过程。但是,处理通常不会导致属性发生更改,因此updated_at列永远不会更改(即使调用了save)。

我不想禁用部分更新(通常,它们很有用)。我猜我的两个选择是:

  1. 为模型添加一个单独的时间戳列(即“processed_at”)并自行管理,尽管这看起来有点浪费/多余。
  2. 或以某种方式覆盖updated_at属性的管理?
  3. 我听说Rails 3会有一个'触摸'方法,这正是我正在寻找的。

    任何想法/选项/意见?

2 个答案:

答案 0 :(得分:52)

实际上touch方法已经在Rails 2.3.x中了,所以你可以这样做:

model.touch

更新updated_at列。或者,使用当前日期和时间更新其他列:

model.touch(:column_name)

答案 1 :(得分:1)

现在2.3.x系列已经过去了,更明确的答案是触摸在2.3.8之前没有进入ActiveRecord。因此,任何仍在使用Rails 2.3.2的人(因为OP是 - 而且正如我现在所做的那样)需要找到另一种方法来“触摸”他们的记录。