在Rails 2.3.2中"触摸"updated_at列

ide*_*lum 30 timestamp ruby-on-rails

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

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

  1. 为模型添加一个单独的时间戳列(即' processed_at')并自行管理,尽管这看起来有点浪费/多余.
  2. 或者以某种方式覆盖updated_at属性的管理?

我听说Rails 3会有一个'触摸'方法,这正是我正在寻找的.

任何想法/选项/意见?

Joh*_*ley 52

实际上该touch方法已经在Rails 2.3.x中了,所以你可以简单地做到:

model.touch
Run Code Online (Sandbox Code Playgroud)

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

model.touch(:column_name)
Run Code Online (Sandbox Code Playgroud)