`

rails touch用法

阅读更多
touch是Rails2.3.3引入的新功能,可以将指定的attributes改为当前时间,默认是更改updated_at或updated_on。

典型的用法在many-to-one时,当many端发生改变时,更新one端的updated_at时间。比如在一个论坛系统中,一个帖子的更新时间会随着之后的回复发生改变:

1.class Post < ActiveRecord::Base
2.has_many :replies
3.end1.class Reply < ActiveRecord::Base
2.belongs_to :post, :touch => true
3.end这里声明的:touch => true,其实就是定义了一个method来更新Post的updated_at时间,并且在after_save和after_destroy的时候调用该method

view sourceprint?01.def add_touch_callbacks(reflection, touch_attribute)
02.method_name ="belongs_to_touch_after_save_or_destroy_for_#{reflection.name}".to_sym
03.define_method(method_name) do
04.association = send(reflection.name)
05.
06.if touch_attribute == true
07.association.touch unless association.nil?
08.else
09.association.touch(touch_attribute) unless association.nil?
10.end
11.end
12.after_save(method_name)
13.after_destroy(method_name)
14.end
1
3
分享到:
评论

相关推荐

    collection_json_rails:使用Rails touch进行Collection + JSON序列化

    用法 您只需要为模型创建序列化器即可。 这是一个例子: class PostSerializer &lt; CollectionJson :: Serializer items do attribute :title attribute :body end template :title , :body end 用Collection

    使用 Ruby on Rails 和 Eclipse 开发 iPhone 应用程序教程(含图例)

    教程首先介绍了构建能识别 iPhone 或 iPod touch 浏览器的 Ruby on Rails 应用程序的方法,允许 Mobile Safari 用户在需要时切换到全版 Web 内容。这涉及到服务器端的架构设计,以及如何为 iPhone 用户提供定制内容...

    rails50:使用Rails 5进行敏捷Web开发的源代码-web development source code

    在Rails 5中,ActiveRecord引入了`touch`方法的优化,允许更灵活地更新关联记录的时间戳。此外,新的`exists?`查询方法提升了查询性能,同时`update_columns`方法允许在不触发回调的情况下更新记录。 二、Action...

    high_voltage:轻松在Rails应用程序中包含静态页面

    在其中放置一些有趣的内容之后,您可以使用以下方法从应用程序中的任何位置链接到该对象: &lt;&#37;= link_to 'About' , page_path ( 'about' ) %&gt; 您可以将页面嵌套在目录结构中,如果从URL角度看这对

    es_ios_utils:Eye Street Research 的类别和类,以协助 Cocoa Touch 开发

    这个库的主要目的是干掉冗长的 iOS 代码并减少不必要的仪式,使用语言特性,如类别、@dynamic、块和偶尔的宏。 Rails 和 Java 标准都是在合理的情况下借用的。 当方法从其他语言中借用时,它们通常应该符合 ...

    Redmine-Touch:Redmine插件添加缺少的“上次更新者”功能

    Redmine-Touch Redmine插件添加缺少的“上次更新者”功能 安装方式 git clone redmine_touch ...如果看不到创建的新字段,请确保您运行bundle exec rake redmine:plugins:migrate RAILS_ENV=production

    Ruby-Mobility可拔插的Ruby翻译框架

    此外,它也支持ActiveRecord的`touch`和`touch_all`方法,确保当翻译内容更新时,相关记录的更新时间戳也能同步更新。 在实际项目中,你可能会遇到复杂的场景,如多对多关系下的翻译。Ruby-Mobility通过扩展支持...

    用HTML5CSS3实现媲美原生应用的交互体验_尤雨溪

    包括Ruby on Rails、Django、CodeIgniter、Yii等,这些框架通常用于处理服务器端逻辑,如数据处理和业务逻辑等。 ##### 基于客户端的框架 - **Backbone.js**:轻量级框架,提供了模型(Model)、集合(Collection)...

    redmine系统agile敏捷插件安装包

    重启方法取决于你的部署方式,可能包括`touch tmp/restart.txt`(对于Passenger)或`systemctl restart redmine.service`(对于Systemd)。 4. **激活插件**:登录到Redmine的管理界面,找到“插件”设置,启用刚...

    iOS_Ruby_DropIn_Braintree

    9. **Ruby**: 虽然项目名称包含"Ruby",但这里可能指的是Ruby在后端的角色,比如使用Ruby on Rails搭建服务器端API,处理支付验证和业务逻辑。了解Ruby的基础和与iOS的交互方式也是有益的。 通过研究`iOS_Ruby_Drop...

Global site tag (gtag.js) - Google Analytics