Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails &引用;触摸“;更新了Rails 2.3.2中的_at列_Ruby On Rails_Timestamp - Fatal编程技术网

Ruby on rails &引用;触摸“;更新了Rails 2.3.2中的_at列

Ruby on rails &引用;触摸“;更新了Rails 2.3.2中的_at列,ruby-on-rails,timestamp,Ruby On Rails,Timestamp,我有一个过程,它迭代一组ActiveRecord模型,进行一些处理,然后再次保存模型。但是,处理通常不会导致属性的更改,因此处的updated\u列永远不会更改(即使调用了save) 我不希望禁用部分更新(一般来说,它们很有用)。我猜我的两个选择是: 在模型中添加一个单独的时间戳列(即,“processed_at”)并自己管理,尽管这似乎有点浪费/冗余 或者以某种方式覆盖更新的属性的管理 我听说Rails 3将有一个“触摸”方法,这正是我所寻找的 有什么想法/选项/意见吗?实际上,Rails 2

我有一个过程,它迭代一组ActiveRecord模型,进行一些处理,然后再次保存模型。但是,处理通常不会导致属性的更改,因此处的
updated\u列永远不会更改(即使调用了save)

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

  • 在模型中添加一个单独的时间戳列(即,“
    processed_at
    ”)并自己管理,尽管这似乎有点浪费/冗余
  • 或者以某种方式覆盖
    更新的属性的管理
  • 我听说Rails 3将有一个“触摸”方法,这正是我所寻找的

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

    实际上,Rails 2.3.x中已经有了该方法,因此您可以简单地执行以下操作:

    model.touch
    
    更新
    列中的
    updated\u。或者,要使用当前日期和时间更新其他列,请使用:

    model.touch(:column_name)
    

    既然2.3.x系列已经出现和消失,一个更明确的答案是touch直到现在才进入ActiveRecord。因此,任何仍在使用Rails 2.3.2的人(就像之前的操作一样——就像我现在的操作一样)都需要找到另一种方式来“触摸”他们的记录。

    Wow!你说得对。吸取的教训是,不要相信你在博客文章()中读到的所有内容,直接访问来源()我想DHH可能在Twitter上提到过它-这就是我知道它的原因。Grrr。。。看起来触摸屏支持刚刚错过了2.3.2版本,只是在2.3-STABLE分支中。没有2.3.3里程碑,但2.3.4被列为7月18日。我想我只好等了:-(