已经添加到Rails 2.3中
引用
What's New in Edge Rails: Touching
Posted by ryan
at 7:51 AM on Monday, April 20, 2009
很多时候,我们希望在相关对象更新的时候,能够通过反射机制更新对应父对象.典型的例子,当主贴有回复的时候,可以更新贴子的最近更新时间.利用ActiveRecord的新功能Touching很容易实现.
那么,通过一个具体例子看看怎么使用:
#主贴对应model
class Article < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
# 当回复被添加/更新/删除时
# 更新主贴
belongs_to :article, :touch => true
end
# 增加新回复,可以看到主贴时间更新
article.updated_at #=> "Mon Apr 20 07:42:53 -0400 2009"
article.comments.create(:body => "New comment")
article.updated_at #=> "Mon Apr 20 07:43:27 -0400 2009"
# 更新或删除,同样
article.comments.first.destroy
article.updated_at #=> "Mon Apr 20 07:45:23 -0400 2009"
由上可见,touching的功能可以非常简单方便的实现,同步回调,保持一致.
如果,主题的更新时间字段,不想用标准的updated_at.那么,通过简单的修改也可以容易的实现,如下:
class Article < ActiveRecord::Base
has_many :comments
validates_presence_of :last_updated_at # 不是标准的updated_at
end
class Comment < ActiveRecord::Base
belongs_to :article, :touch => :last_updated_at# 注明就可以
end
# 增加新的回复,主贴的更新时间同步更新
article.last_updated_at #=> "Mon Apr 20 07:42:53 -0400 2009"
article.comments.create(:body => "New comment")
article.last_updated_at #=> "Mon Apr 20 07:43:27 -0400 2009"
也可以通过之间调用,实现回调,如下:
article.updated_at #=> "Mon Apr 20 07:42:53 -0400 2009"
article.touch
article.updated_at #=> "Mon Apr 20 07:43:27 -0400 2009"
分享到:
相关推荐
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比... 标签:rails
rails 2.3 chm文档 官方最新版
Railsbrain是一个专注于Rails框架的在线资源平台,而这个“railsbrain网站的rails2.3文档(bug修复版)”显然是一份针对Rails 2.3版本的更新文档,旨在修复用户在浏览和交互过程中遇到的问题。Rails是Ruby编程语言的...
1. **快速开发**:Rails内置了许多实用的功能和库,如ActiveRecord ORM、MVC架构等,这些都能够极大地加快开发进度。 2. **代码简洁**:Rails遵循“约定优于配置”的原则,这意味着开发者无需编写大量重复代码就能...
在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种用户交互功能,例如三级联动选择,这在处理如中国省市区这样的地理数据时尤其常见。这篇博客文章“Rails中应用Ext.tree:以中国的省市地区三级联动选择为...
Ruby on Rails Guide:是rails官方教程,本人为了大家学习查阅的方便,制成chm格式。就如同java doc的chm格式一样方便。
10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...
所有必需的信息都可以在Wiki上找到: 如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、3.0、3.1和3.2下一个版本的TODO(写于2010年6月9日) 处理同一资源名称的多个翻译(例如:嵌套和非嵌套资源) 处理...
Rails 3.2 API 是一个重要的开发...查阅这些文档可以帮助开发者快速定位问题、学习新的功能,从而提升开发效率和代码质量。在学习和使用Rails 3.2 API时,建议结合实际项目进行实践,这样能更好地理解和掌握其精髓。
随着Web技术的不断发展,新的安全威胁和防护手段也在不断出现,保持对最新安全实践的了解是非常重要的。 Rails社区和框架本身都非常注重安全,通过遵循最佳实践和利用Rails提供的工具,开发者可以创建出既安全又...
4. 插件和Gem:Rails 2.3.x 支持 Gem 管理系统,允许开发者通过安装和管理第三方 Gem 来扩展 Rails 功能。插件是 Rails 社区共享代码的一种方式,可以快速添加特定功能。 5. 测试框架:Rails 内置了测试支持,包括 ...
Rails 2.3 和 3 兼容。 关于 PgQ 安装 安装天空工具:Ubuntu 11.10: # apt-get install postgresql-server postgresql-client # apt-get install skytools 宝石档案: gem 'pgq' 从 database.yml 创建股票...
rails guides的CHM版本,这个向导的版本是2.3
rails5-docker-alpine:使用Alpine Linux的Rails轻量级Docker开发环境
- **Rails的主要特性**:Rails采用了约定优于配置(Convention over Configuration)的设计理念,这使得开发过程中的很多设置能够自动完成,从而加快了开发速度。 ### Ruby编程语言 - **Ruby语言**:Ruby是一种...
通过生成器生成新模型: rails g model Sibext service:integer 执行迁移: rake db:migrate 将枚举添加到模型中: class Sibext < ActiveRecord::Base enum service: [:mobile_development, :web_...
7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...
- **生成器(Generators)**:Rails提供了强大的生成器工具,可以自动生成模型、控制器、迁移文件等,例如`rails generate model Post title:string content:text`。 - **数据库迁移(Database Migrations)**:...
- MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器协调两者。 - Routes:Rails的路由系统将HTTP请求映射到控制器的相应动作,定义了应用的URL结构。 - ActiveRecord:ORM(对象关系映射)...