Rails 2.1快出来了,和2.0相比它又添加了很多新特性,列举一下我认为值得关注的新特性:
1. Has Finder 功能
广受欢迎的Has Finder插件被集成到了2.1的代码中,不过换了种写法,使用named_scope:
Ruby代码
class User < ActiveRecord::Base
named_scope :active, :conditions => {:active => true}
named_scope :inactive, :conditions => {:active => false}
named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
end
# 用法
User.active # same as User.find(:all, :conditions => {:active => true})
User.inactive # same as User.find(:all, :conditions => {:active => false})
User.recent # same as User.find(:all, :conditions => ['created_at > ?', 1.week.ago])
# 还可以把他们组合起来组合用
User.active.recent
class User < ActiveRecord::Base
named_scope :active, :conditions => {:active => true}
named_scope :inactive, :conditions => {:active => false}
named_scope :recent, lambda { { :conditions => ['created_at > ?', 1.week.ago] } }
end
# 用法
User.active # same as User.find(:all, :conditions => {:active => true})
User.inactive # same as User.find(:all, :conditions => {:active => false})
User.recent # same as User.find(:all, :conditions => ['created_at > ?', 1.week.ago])
# 还可以把他们组合起来组合用
User.active.recent
你还可以传递参数:
Ruby代码
class User < ActiveRecord::Base
named_scope :registered, lambda { |time_ago| { :conditions => ['created_at > ?', time_ago] }
end
User.registered 7.days.ago # same as User.find(:all, :conditions => ['created_at > ?', 7.days.ago])
class User < ActiveRecord::Base
named_scope :registered, lambda { |time_ago| { :conditions => ['created_at > ?', time_ago] }
end
User.registered 7.days.ago # same as User.find(:all, :conditions => ['created_at > ?', 7.days.ago])
和对象关联定义类似,你还可以使用扩展:
Ruby代码
class User < ActiveRecord::Base
named_scope :inactive, :conditions => {:active => false} do
def activate
each { |i| i.update_attribute(:active, true) }
end
end
end
# Re-activate all inactive users
User.inactive.activate
class User < ActiveRecord::Base
named_scope :inactive, :conditions => {:active => false} do
def activate
each { |i| i.update_attribute(:active, true) }
end
end
end
# Re-activate all inactive users
User.inactive.activate
Rails2.1这个新特性可以极大地简化查询代码组合,达到更好的代码重用率,我们JavaEye的很多查询代码都可以从这个新特性上获益。
2. Dirty Objects
Rails2.1添加了类似Hibernate的检查对象是否变更机制,但是在使用上比Hibernate更加简洁,功能更加强大:
Ruby代码
article = Article.find(:first)
article.changed? #=> false
# 它还可以单独检查某个属性是否变更过
# 使用 attr_name_changed? 方法
article.title #=> "Title"
article.title = "New Title"
article.title_changed? #=> true
# 使用 attr_name_was 方法获取变更前的值
article.title_was #=> "Title"
# 使用 attr_name_change 方法同时获取新旧2个值
article.title_change #=> ["Title", "New Title"]
article = Article.find(:first)
article.changed? #=> false
# 它还可以单独检查某个属性是否变更过
# 使用 attr_name_changed? 方法
article.title #=> "Title"
article.title = "New Title"
article.title_changed? #=> true
# 使用 attr_name_was 方法获取变更前的值
article.title_was #=> "Title"
# 使用 attr_name_change 方法同时获取新旧2个值
article.title_change #=> ["Title", "New Title"]
这个新特性可以用来方便地做变更日志,状态改变监测等等多种用途,和原先需要自己写扩展代码相比要方便多了。
3. Partial Updates
在Dirty Objects的基础上,只更新对象变更属性的功能也加入了进来:
Ruby代码
article = Article.find(:first)
article.title #=> "Title"
article.subject #=> "Edge Rails"
# 只更新一个属性
article.title = "New Title"
# 只有更新过的属性被执行了update操作
article.save
#=> "UPDATE articles SET title = 'New Title' WHERE id = 1"
article = Article.find(:first)
article.title #=> "Title"
article.subject #=> "Edge Rails"
# 只更新一个属性
article.title = "New Title"
# 只有更新过的属性被执行了update操作
article.save
#=> "UPDATE articles SET title = 'New Title' WHERE id = 1"
如果要使用这个特性,需要设置:
Ruby代码
ActiveRecord::Base.partial_updates = true
ActiveRecord::Base.partial_updates = true
partial updates会提高更新的性能,我们JavaEye的一些使用update_all操作的代码都可以改成使用partial updates了。
http://ryandaigle.com/ 是一个国外的专门发布Rails新特性介绍的博客,除了上面提到的3点以外,还有一些特性值得关注:
Gem Dependencies
UTC-based Migration Versioning
Has One :through
Easier Timezones

最新回复
上海私家侦探
丽江自助游
一直不知道该写什么内容,那天在工作中遇到了一个google收录后又突然消失的问题,后来部门的一位seo专员解决了这个问题,我想和大家分享一下。同时在根据自己的一些经验说说我对这三家搜索引擎算法的了解。
云南丽江
丽江旅游
第一个是梦幻西游外挂,
第二个是你最爱的人,
第三个是最爱你的人,
第四个是共度一生的人..
首先会遇到你最爱的人,然後体会到爱的感觉;
因为了解被爱的感觉,所以才能发现最爱你的人;
当你经历过爱人与被爱,学会了爱,才会知道什么是你需要的,
也才会找到最适合你,能够相处一辈子的人。
但很悲哀的,在现实生活中,这三个人通常不是同一个人;
你最爱的,往往没有选择你;
最爱你的,往往不是你最爱的;
而最长久的,偏偏不是你最爱也不是最爱你的,
只是在最适合的时间出现的那个人。
你,会是别人生命中的第几个人呢?
没有人是故意要变心的,他爱你的时候是真的爱你,
可是他不爱你的时候也是真的不爱你了,
他爱你的时候没有办法假装不爱你;
同样的,他不爱你的时候也没有办法假装爱你 。
当一个人不爱你要离开你,
你要问自己还爱不爱他,
如果你也不爱他了,千万别为了可怜的自尊而不肯离开;
如果你还爱他,你应该会希望他过得幸福快乐,
希望他跟真正爱的人在一起,绝不会阻止,
你要是阻止他得到真正的幸福,就表示你已经不爱他了,
而如果你不爱他,你又有什么资格指责他变心呢?
热血江湖外挂不是占有,
你喜欢月亮,不可能把月亮拿下来放在风火之旅外挂里,
但月亮的光芒仍可照进你的诛仙外挂。
换句话说,你爱一个人,也可以用另一种方式拥有,
让爱人成为生命里的永恒回忆,
如果你真爱一个人,就要爱他原来的样子—爱他的好,也爱他的坏:
爱他的优点,也爱他的缺点,
绝不能因为爱他,就希望他变成自己所希望的样子,
万一变不成就不爱他了。
真正爱一个完美私服是无法说出原因的,
你只知道无论何时何地、心情好坏,你都希望这个人陪著你;
真正的感情是两人能在最艰苦中相守,也就是没有丝毫要求。
毕竟,感情必须付出,而不是只想获得;
分开是一种必然的考验,
如果你们感情不够稳固,只好认输,
真爱是不会变成怨恨的。
两人在谈情说爱的时候,
最喜欢叫对方发誓,许下承诺我们为什么要对方发誓,
就是因为我们不相信对方,我们根本不相信情人,
而这些山盟海誓又很不切实际:
海枯石烂、地老天荒,都不能改变我对你的爱!
明知道海不会枯、石不会烂、地不会老、天不会荒;
就算会,也活不到那时候。
许下诺言的时候千万注意,不要许下可以实现的诺言,
最好是承诺做不到的事,
反正做不到的,随便说说也不要紧,
请记住:”不可能实现的诺言最动人”
在爱情里,说的是一套,做的是另一套;
讲的人不相信,听的人也不相信。
你呢?找到了第几个?
茫茫人海中,你遇见了谁?谁又遇见了你?
深圳富祥居装饰公司主营:居家装修.写字楼装修.办公室装修.办公楼装修.工业厂房装修.专卖店装修.店铺装修.别墅装修.发廊装修.展厅装修.酒楼装修.餐厅装修,食堂装修等设计及施工,大小均做.
深圳装饰公司电话:0755-82305325 82305627
深圳装修网址:http:www.szfxzs.com
深圳装饰网址:http://www.fxjzs.com
深圳装饰专线:0755-82305285 28581315
活着
我也答應魔域私服暸伱要快樂、
就算..是一秒、
那...一秒得微笑、為伱城、 不过给人感觉不一样哟~
屬于伱得城笑。 就算 在上 敲出 來 的愛情
又 怎樣 呢。感谢楼主的文章让我懂得什么是爱!!!
同时加油奥运!!!希望,平安中国!
云南丽江
Google周三向美国证券交易委员会提交的文件显示,该公司联合创始人拉里-佩吉和塞吉-布林以及首席执行官埃里克-施密特2006年基本年薪仅有1美元.
Google提交的文件显示,除1美元的基本年薪外,施密特去年还获得了1723美元的奖金,及价值55.5742万美元的其它报酬,其中53.2755 万美元用于他的个人安全.除1美元基本年薪之外,布林和佩吉去年分别获得了1723美元的奖金,其中1000美元为每名Google员工都有的过节费.佩 吉还获得了3.6795万美元的其它报酬,包括3.3195万美元的交通、后勤和个人旅行安全费用,以及3600美元的个人旅行租车费用.佩吉2006年 总薪酬达到3.8519万美元,超过布林的1724美元.
上海私家侦探
丽江旅游
云南丽江
Google周三向美国证券交易委员会提交的文件显示,该公司联合创始人拉里-佩吉和塞吉-布林以及首席执行官埃里克-施密特2006年基本年薪仅有1美元.
Google提交的文件显示,除1美元的基本年薪外,施密特去年还获得了1723美元的奖金,及价值55.5742万美元的其它报酬,其中53.2755 万美元用于他的个人安全.除1美元基本年薪之外,布林和佩吉去年分别获得了1723美元的奖金,其中1000美元为每名Google员工都有的过节费.佩 吉还获得了3.6795万美元的其它报酬,包括3.3195万美元的交通、后勤和个人旅行安全费用,以及3600美元的个人旅行租车费用.佩吉2006年 总薪酬达到3.8519万美元,超过布林的1724美元.
上海私家侦探
丽江旅游
aoc gold and age of conan gold | aoc power leveling with wow gold |wow gold cheap
1 澳大利亚T4A型牙套:成人牙齿排列咬合不正正畸矫正www.800258.com
2 澳大利亚t4a型牙套 www.800258.com
3 t4a型牙套 www.800258.com
4 t4a牙套www.800258.com
5 澳大利亚 t4awww.800258.com
6 澳大利亚 牙套www.800258.com
7 隐形牙套www.800258.com
8 牙套多少钱www.800258.com
9 带牙套www.800258.com
10 牙套价格www.800258.com
11 隐型牙套www.800258.com
12 T4A恒牙列错殆畸形预成矫治器www.800258.com
13 t4a型牙套www.800258.com
14 原装进口澳大利亚牙齿矫正器T4Awww.800258.com
15 隐形矫正器www.800258.com
16 隐型矫正器www.800258.com
Buy Age of Conan Gold direct from the USA at low prices. We guarantee fast delivery, secure transactions and provide live customer support 24/7.
Age of Conan gold cheap4gold.com
AoC Gold - Delivered in 30-60 Minutes!
Cheap AoC Gold from the USA!You don't need to go to China for cheap AoC Gold - we offer competitive prices on all servers whilst maintaining the high level of service you'd expect from an American provider.cheap4gold.com
代孕信息网是加一代孕中心旗下网站,提供中国代孕妈妈,代孕妈妈图片,试管婴儿论坛,代孕医院等代孕中介服务。正规代孕公司注册,有代孕
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
小AD一下 呵呵 又要学这个:表演培训 影视表演培训 北京影视学校 播音主持 播音主持培训 的快快报名
联系电话:15889351717 QQ:228577322。
惊天地且泣鬼神的好帖
让人阅毕击掌三叹的好帖
让人佩服得五体投地的好帖
让人奔走相告曰须阅读的好帖
让斑竹看后决定加精固顶的好帖
让人看后在NSK轴承纷纷转贴的好帖
让人看后连天津合金管网站都没兴趣的好帖
让人看完后就要往上顶往死里顶的好帖
让人看后不断在Q345B无缝管重复引用的好帖
让人一见面就问你看过不锈管好帖没有的好帖
让人半夜上厕所都要打开天津无缝管看一遍的好帖
让个读过后都下载在硬盘里详细研究欣赏的好帖