Rails3 中 ActiveRecord API 的变化
Friday, May 14th, 2010Rails3 中 ActiveRecord API 的变化从书写上看已经是翻天覆地了,过去查询条件都是用 hash 的方式写到 finder 里面,现在全部转化成了 method 调用的串联。
比如过去的:
Post.find(:all, :condition => “user_id = 1″, :order => “id desc”, :limit => 10, :include => :replies)
在 rails3 中要写成:
Post.where(”user_id=1″).order(”id desc”).limit(10).includes(:replies)
看上去好似 named_scope
完全正确,rails3 针对 AR API 改写的目标就是:Everything is named_scope.
rails3 中对 ActiveRecord 的 API 改写成了完全符合 ActiveModel API 的样子。而 ActiveModel 相当于 ORM 这一层的接口,ActiveRecord 是一种具体实现,当其他的 ORM(如 DataMapper)都复合 ActiveModel 这样的接口时,针对 model 部分的插件(如 will_paginate)就可以通用了。


