`

rails3 更新时间问题

阅读更多

rails3 更新时间问题(updated_at)

(未完)

 

ruby:1.9.2

rails:3.0.3

 

一般来说,对表进行设计时候,如果不做对创建时间与更新时间做任何处理的话,rails则会默认给你加上。用来监控表中的记录

 

创建记录

rails会把现当前的时间作为值,同时设置给created_at与updated_at

 

更新记录

如果表中的记录发生变更的话,则会更新updated_at这个时间戳高

 

实际的情况是怎么样的呢?

在调用update,save,update_attributes后,rails 会判断待修改记录中的是否有字段发生改变,

如果发生改变,则去更新这个updated_at 时间戳

 

 

如果没有发生改变,这时,并不会更新这个updated_at时间戳

 

注意,如果调用increment!或decrement!来改变计数的话,是不会更新updated_at时间戳的

 

使用touch处理表之间的更新关系

如果出现层次关系的表,子表的数据发生变化,需要更新主表的updated_at,这时如何处理

 

例如:post内容发生变化,需要更新topic表的时间updated_at时间戳

在post mode中的topic建立的belongs_to关系中,添加选项:touch =>true

 

belongs_to :topic, :touch => true

 这时,只要post调用save,update, update_attributes就会更新topic的updated_at时间。。。

 

 

以上,仅是实验中得来,具体依据尚未充足

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics