ActiveResource find 的升级
ActiveResource 的 find method 刚刚通过 :from 选项使搜索表达变得 更加紧凑 。这个选项撤换了之前通过向 Custom Method 添加单一的实参进行搜索的方式来限制小部分搜索结果。
比如说,之前如果您激活了一个叫做 recent 的 custom method:
Post.find(:recent) #=> GET /posts/recent.xml |
现在您将需要 在第一个实参里 声明 多态 或者 范围1 (在声明的是 :all),并通过 :from 选项添加 custom method:
Post.find(:all, :from => :recent) #=> GET /posts/recent.xml |
您也可以通过 :one的范围 来针对单态的资源应用同样的任务:
Post.find(:one, :from => :latest) #=> GET /post/latest.xml |
并且,如果您只想亲自设定获取 Post 的地址,则可以使用实际的 URI 文字:
Post.find(:one, :from => "/categories/1/latest.xml") #=> GET /categories/1/latest.xml |
如此一来,我们通过限制 find 里的第一个实参使得 资源的id 或 其范围以及任何 custom method 或 手动设置的资源地址 统统都被移动到 :from 选项中。
ActiveResource 新增的 Custom Headers
ActiveResource 通过最近的升级可以为每项资源设定 custom header 。
1 2 3 |
class Post < ActiveResource::Base headers['X-MyHeader'] = 'ryan' end |
每一个来自Post的请求现在将囊括那个header。
笔记:原始的补丁所使用的 custom_header 在后来被 改为 headers 。
非常高兴看到 ActiveResource 的使用变得越来越简便!
注脚
1范围: 也就是 scope,类别有::all, :one,:first
原文作者是 Ryan Daigle, 请访问他的博客
本片译文的原文地址:http://ryandaigle.com/articles/2007/5/7/what-s-new-in-edge-rails-activeresource-finder-update



