- 浏览: 150288 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
引用地址:
http://www.letrails.cn/archives/rails-update-record-without-timestamping/
Rails的save和 update方法默认都会将updated_at更新为当前时间,并且不允许手动设置,但是有些情况下,我们可能希望只更新记录的某个字段,而不希望 updated_at被更新,比如显示帖子的时候增加帖子的查看次数,这可以通过设置model的record_timestamps属性实现:
Post.record_timestamps=false
但是因为record_timestamps是一个类变量,因此改变这个值会影响到所有Post的保存,如果在同一时间有用户确实修改了Post的内容或者标题,updated_at也将不会更新。
Neeraj在这篇帖子里提供了一个方法,只修改当前对象的record_timestamps属性,在保存完后再进行恢复:
module ActiveRecord class Base def save_without_timestamping class << self def record_timestamps; false; end end save class << self def record_timestamps; super ; end end end end end
这段代码将打开当前对象的metaclass,并为当前对象定义一个record_timestamps方法来覆盖全局的设置,你可以将这段代码放到 initializer中,然后在不需要更新时间戳的时候调用save_without_timestamping来更新记录,就像下面这样:
post = Post.find(:id) post.view_count += 1 post.save_without_timestamping
上面一个实现是通过super方法恢复record_timestamps设置的,Neeraj还提供了一个使用remove_method的版本,我个人更喜欢这个版本:
module ActiveRecord class Base def save_without_timestamping class << self def record_timestamps; false; end end save class << self remove_method :record_timestamps end end end end
发表评论
-
Google App Engine and others
2010-09-15 11:27 840有用的技术文章 先记载 有空 研究下 さくっとRails ... -
基于jquery和mini_magick的图片裁剪
2010-09-15 11:07 1492引用网址 http://duyouhua1214.iteye ... -
ruby gem相关命令使用
2010-08-26 12:45 1609gem相关命令使用 1.显示gem的帮助和版本 gem – ... -
深入理解alias, alias_method和alias_method_chain
2010-08-06 17:14 978http://blackanger.blog.51cto.co ... -
Rails 3 特点
2010-08-06 16:38 946真的想留下来 http://railslove.com/w ... -
Fix N+1 Queries
2010-08-06 16:16 925http://rails-bestpractices.com/ ... -
query-reviewer sql explain and review in the page
2010-08-06 12:20 1349引用网址 http://github.com/dsboulde ... -
request-log-analyzer log分析工具
2010-08-06 12:03 1633参考网址: http://github.com/wvanber ... -
IE7 Bug导致Rails Session保存失败
2010-08-06 10:56 980http://www.letrails.cn/archives ... -
how to generate qrcode on ror
2010-02-04 16:27 8801. In your rails project, in ... -
rmagick ror 上 安装
2009-11-18 09:06 865rmgick 安装规范 ror很多人现在在用了,但是发现 ... -
Update Rails to 2.2.2 (Rails 2.2.2)
2009-03-08 14:53 1000gem install -v=2.2.2 rails Suc ... -
Use helpers in controllers or models
2009-01-19 16:22 940引用http://snipplr.com/view/2505/ ... -
open-flash-chart
2008-11-07 14:07 2444http://pullmonkey.com/2008/7/23 ... -
rake db:migrate
2008-11-07 11:58 1295【ruby on rails】rake db:migrate ... -
rss maker
2008-11-07 11:43 1102http://gdgdlog.net/log/show/130 ... -
acts_as_authenticated
2008-11-07 11:35 1132ruby script/plugin install act ... -
validates
2008-11-07 11:24 1091先週ずっとインフルエンザでダウンしてました。 今日はvail ... -
rails で model の変更を監視するプラグイン
2008-11-07 11:12 1372acts_as_modified モデルの変更を監視して、各 ... -
exception_notification
2008-11-07 11:03 12251 applicattion.rb 配置 incl ...
相关推荐
通常,服务器会保存每个版本的发布日期,当客户端查询时,会比较其当前版本与服务器上的最新版本的时间戳,如果客户端版本较旧,则触发升级流程。 【标签】"自动升级"进一步确认了系统的核心功能,即实现软件的自动...
Rack::Timesec正是这样一个中间件,它的主要任务是在每个HTTP请求开始时记录时间戳,并在请求结束时计算并显示处理所用的时间。 Rack::Timesec源码的结构通常包含以下几个部分: 1. **初始化**:在Rack::Timesec...
3. **模型方法**:编写保存和查询方法,处理时态逻辑,例如插入、更新和查询时要考虑有效时间范围。 4. **查询接口**:提供查询方法,使得开发者可以方便地根据时间范围查询历史数据状态。 5. **事务处理**:确保在...
4. 时间戳和作者信息:记录主题创建时间及发布者。 **三、回复功能** 1. 评论回复:用户可以对已发布的主题进行回复,表达自己的观点。 2. 引用回复:用户可引用他人帖子,方便上下文讨论。 3. 楼层管理:按时间...
用户表存储用户信息,聊天室表记录聊天室的元数据,消息表则保存每条聊天记录,包括发送者、接收者、消息内容和时间戳等信息。 6. **API设计**:SailsJS的RESTful API设计原则使得创建、读取、更新和删除(CRUD)...
1. **会话记录**:Trisul 能够跟踪和记录网络上的每一个连接会话,包括源IP、目的IP、端口信息以及通信的时间戳等,这对于网络行为审计和异常检测至关重要。 2. **流量统计**:它提供详细的流量统计报告,包括吞吐...
它也可能涉及如何集成到现有的 Rails 应用中,或者提供了一些额外的功能,比如自动处理时间戳、关联记录的创建和更新等。 标签 "Ruby" 暗示这与 Ruby 语言的核心特性或其生态系统有关。Ruby 提供了丰富的元编程能力...