And*_*imm 25 ruby-on-rails rails-activerecord
我听说Rails的ActiveRecord/ActiveModel有一些叫做"触摸"的东西.但是,我没有找到任何描述此功能目的的内容.
它做了什么,有什么用?
Rya*_*n K 41
根据API文档,它是一种仅使用当前时间更新模型的指定时间戳的方法.所以为了更新updated_at字段:
product.touch
Run Code Online (Sandbox Code Playgroud)
或者更新updated_at和designed_at字段:
product.touch(:designed_at)
Run Code Online (Sandbox Code Playgroud)
现在,我以前从未使用过这种方法,但我认为在某种情况下将一个问题(如Stack Overflow)"碰撞"到搜索查询的顶部而不实际更改内容会很有用.
Abr*_*ram 22
除了Ryan的回答,不要忘记在模型中使用touch,如下所示:
class Book < ActiveRecord::Base
belongs_to :library, touch: true
end
Run Code Online (Sandbox Code Playgroud)
现在,当您向图书馆添加图书时,图书馆的updated_at时间将反映最新图书的添加时间!奖金!
touch如果您正在进行Russian Doll 缓存,这会很有用。
俄罗斯套娃缓存的优点是,如果更新单个产品,则在重新生成外部片段时可以重用所有其他内部片段。
如果[内部片段]的任何属性发生更改,该
updated_at值将被设置为当前时间,从而使缓存过期。但是,由于updated_at不会更改 [parent] 对象,因此该缓存不会过期,并且您的应用程序将提供过时的数据。为了解决这个问题,我们将模型与触摸方法联系在一起。
| 归档时间: |
|
| 查看次数: |
9821 次 |
| 最近记录: |