`

Rails 2.3 的新功能 Rails:Touching

阅读更多
已经添加到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"

4
0
分享到:
评论

相关推荐

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比... 标签:rails

    rails 2.3 chm文档 ,官方最新版

    rails 2.3 chm文档 官方最新版

    railsbrain网站的rails2.3文档(bug修复版)

    Railsbrain是一个专注于Rails框架的在线资源平台,而这个“railsbrain网站的rails2.3文档(bug修复版)”显然是一份针对Rails 2.3版本的更新文档,旨在修复用户在浏览和交互过程中遇到的问题。Rails是Ruby编程语言的...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    1. **快速开发**:Rails内置了许多实用的功能和库,如ActiveRecord ORM、MVC架构等,这些都能够极大地加快开发进度。 2. **代码简洁**:Rails遵循“约定优于配置”的原则,这意味着开发者无需编写大量重复代码就能...

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种用户交互功能,例如三级联动选择,这在处理如中国省市区这样的地理数据时尤其常见。这篇博客文章“Rails中应用Ext.tree:以中国的省市地区三级联动选择为...

    Ruby on Rails 2.3 Guide.chm

    Ruby on Rails Guide:是rails官方教程,本人为了大家学习查阅的方便,制成chm格式。就如同java doc的chm格式一样方便。

    ruby on rails 2.3.5 api html版

    10. **插件和Gem**:Rails的生态系统中,Gem是第三方库的主要形式,它们提供了额外的功能,如Devise用于身份验证,CanCanCan用于授权,Paperclip或Carrierwave处理文件上传等。 11. **部署**:了解如何将Rails应用...

    i18n_routing:用于Rails 2.3.x和Rails的I18n路由模块。轻松转换您的路由!

    所有必需的信息都可以在Wiki上找到: 如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、3.0、3.1和3.2下一个版本的TODO(写于2010年6月9日) 处理同一资源名称的多个翻译(例如:嵌套和非嵌套资源) 处理...

    rails 3.2 API

    Rails 3.2 API 是一个重要的开发...查阅这些文档可以帮助开发者快速定位问题、学习新的功能,从而提升开发效率和代码质量。在学习和使用Rails 3.2 API时,建议结合实际项目进行实践,这样能更好地理解和掌握其精髓。

    Ruby on Rails中的XSS防御策略:构建安全的Web应用

    随着Web技术的不断发展,新的安全威胁和防护手段也在不断出现,保持对最新安全实践的了解是非常重要的。 Rails社区和框架本身都非常注重安全,通过遵循最佳实践和利用Rails提供的工具,开发者可以创建出既安全又...

    rails2.3.2

    4. 插件和Gem:Rails 2.3.x 支持 Gem 管理系统,允许开发者通过安装和管理第三方 Gem 来扩展 Rails 功能。插件是 Rails 社区共享代码的一种方式,可以快速添加特定功能。 5. 测试框架:Rails 内置了测试支持,包括 ...

    pgq:基于 PgQ Skytools for PostgreSQL 的 ARRails 队列系统,如 Resque on Redis。 Rails 2.3 和 3 兼容

    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 2.3 CHM版

    rails guides的CHM版本,这个向导的版本是2.3

    rails5-docker-alpine:使用Alpine Linux的Rails轻量级Docker开发环境

    rails5-docker-alpine:使用Alpine Linux的Rails轻量级Docker开发环境

    Ruby+on+Rails快速Web应用开发实战.pdf

    - **Rails的主要特性**:Rails采用了约定优于配置(Convention over Configuration)的设计理念,这使得开发过程中的很多设置能够自动完成,从而加快了开发速度。 ### Ruby编程语言 - **Ruby语言**:Ruby是一种...

    rails_admin_enum4:Rails Admin Rails 4.1枚举

    通过生成器生成新模型: rails g model Sibext service:integer 执行迁移: rake db:migrate 将枚举添加到模型中: class Sibext &lt; ActiveRecord::Base enum service: [:mobile_development, :web_...

    Advanced Rails

    7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...

    Ruby on Rails入门例子

    - **生成器(Generators)**:Rails提供了强大的生成器工具,可以自动生成模型、控制器、迁移文件等,例如`rails generate model Post title:string content:text`。 - **数据库迁移(Database Migrations)**:...

    rails-videogame-library:Rails项目组合

    【标题】"rails-videogame-library:Rails项目组合"是一个基于Ruby on Rails框架构建的视频游戏库管理系统。这个项目展示了Rails在开发Web应用程序时的强大功能和灵活性,特别是对于管理和展示游戏信息的复杂数据结构...

Global site tag (gtag.js) - Google Analytics