- 浏览: 149331 次
- 性别:
- 来自: 北京
文章分类
最新评论
引用地址:
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 823有用的技术文章 先记载 有空 研究下 さくっとRails ... -
基于jquery和mini_magick的图片裁剪
2010-09-15 11:07 1475引用网址 http://duyouhua1214.iteye ... -
ruby gem相关命令使用
2010-08-26 12:45 1604gem相关命令使用 1.显示gem的帮助和版本 gem – ... -
深入理解alias, alias_method和alias_method_chain
2010-08-06 17:14 973http://blackanger.blog.51cto.co ... -
Rails 3 特点
2010-08-06 16:38 923真的想留下来 http://railslove.com/w ... -
Fix N+1 Queries
2010-08-06 16:16 918http://rails-bestpractices.com/ ... -
query-reviewer sql explain and review in the page
2010-08-06 12:20 1336引用网址 http://github.com/dsboulde ... -
request-log-analyzer log分析工具
2010-08-06 12:03 1622参考网址: http://github.com/wvanber ... -
IE7 Bug导致Rails Session保存失败
2010-08-06 10:56 976http://www.letrails.cn/archives ... -
how to generate qrcode on ror
2010-02-04 16:27 8751. In your rails project, in ... -
rmagick ror 上 安装
2009-11-18 09:06 861rmgick 安装规范 ror很多人现在在用了,但是发现 ... -
Update Rails to 2.2.2 (Rails 2.2.2)
2009-03-08 14:53 990gem install -v=2.2.2 rails Suc ... -
Use helpers in controllers or models
2009-01-19 16:22 931引用http://snipplr.com/view/2505/ ... -
open-flash-chart
2008-11-07 14:07 2438http://pullmonkey.com/2008/7/23 ... -
rake db:migrate
2008-11-07 11:58 1281【ruby on rails】rake db:migrate ... -
rss maker
2008-11-07 11:43 1096http://gdgdlog.net/log/show/130 ... -
acts_as_authenticated
2008-11-07 11:35 1124ruby script/plugin install act ... -
validates
2008-11-07 11:24 1072先週ずっとインフルエンザでダウンしてました。 今日はvail ... -
rails で model の変更を監視するプラグイン
2008-11-07 11:12 1367acts_as_modified モデルの変更を監視して、各 ... -
exception_notification
2008-11-07 11:03 12131 applicattion.rb 配置 incl ...
相关推荐
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
8. **ActiveSupport**:包含许多实用的工具类和模块,如时间戳处理、字符串处理等,它们被广泛地应用于Rails应用中。 9. **测试驱动开发(TDD)和集成测试**:Rails鼓励开发者使用Test::Unit或Rspec进行测试,确保...
- **升级**:当需要更新到Rails的最新版本时,可以使用`bundle update rails`命令来更新依赖。 - **回滚**:如果更新后出现问题,可以通过`git`命令或者手动修改`Gemfile`来回滚到之前的版本。 #### 六、添加第二个...
更新操作用于修改数据库中的现有记录。可以通过以下方式实现: - **更新属性并保存**: ```ruby t = Tweet.find(3) t.zombie = "Eyeball Chomper" t.save ``` ##### 4. Delete 删除 删除操作用于从数据库中...
随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助开发者掌握在Rails 4.0环境下开发应用所需的关键技能。 书中介绍了Ruby on Rails安装的最佳实践,以及如何通过Git、编辑器和Linux命令行等前置技能的学习...
Rails提供了Session存储,可以用来临时存储用户的购物车信息,但这种存储方式不适用于持久保存。因此,通常我们会将购物车内容存入数据库,以便用户在不同会话之间保持购物车状态。在添加或删除商品时,更新购物车...
Rails 2.1.0引入了许多新特性,例如活动记录(ActiveRecord)的自动保存关联、部分渲染以及自定义验证选项等。 7. **activerecord-2.1.0.gem**:ActiveRecord是Rails中的ORM(对象关系映射)库,负责将数据库表映射...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
同时,表单是Web应用中不可或缺的部分,Rails提供了丰富的API来处理表单的创建和验证。此外,布局(Layouts)允许开发者在多个页面中重用公共的HTML代码,如头部和尾部,从而提高开发效率。 #### 7. Ajax and Web ...
4. 实现CRUD操作:展示所有文章(index),新建文章(new),编辑文章(edit),保存或更新文章(create/update),删除文章(destroy)。 5. 测试:使用RSpec或MiniTest进行功能测试和集成测试,确保应用正常工作。...
Rails默认使用UTF-8编码,但文件系统或者某些外部服务可能使用其他编码,如GBK,这就可能导致在保存或读取中文文件名时出现问题。 首先,我们需要了解Rails中的文件上传是如何工作的。在Rails中,文件上传通常通过`...
`CartItem`可能包含商品ID、数量和用户ID等字段,而`Order`模型则记录了客户的所有订单详情,包括购物车中的所有商品。 2. **控制器(Controller)**:处理HTTP请求,如添加商品到购物车、更新商品数量或查看购物车...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
而在接下来的几个月里,全球超过1400名开发者为Rails贡献了1600多个补丁,最终在2008年6月1日,Ruby on Rails 2.1正式发布。这次版本更新不仅带来了诸多新特性,还进一步优化了原有的功能。 #### Ruby on Rails 2.1...
描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...
综上所述,Rails Recipes是一本全面而深入的Rails指南,它不仅可以作为程序员解决具体问题的工具书,还可以作为提升 Rails 开发技能的进阶读物。无论是Rails新手还是经验丰富的开发者,都能从中获益,学会如何像大厨...