>> books = IndianHistory.find (:all)
这个 Active Resource 模块类似于 Active Record 模块;它们拥有相同的风格。
假设您正在寻找标题为 “Akbar” 的图书,可以使用以下代码:
>> books = IndianHistory.find(:all, :params => { :title => “Akbar”}}
与 Active Record find 方法中的常规 :conditions 子句不同,本示例使用了 :params,且 URL 是 GET http://indian-history.com/indian_histories.xml?title=Akbar。
Active Resource 不仅限于检索数据。您可以使用所有 CRUD 操作。在脚本/控制台中,您可以使用:
>> IndianHistory.create (:title => “Jhansi Stories”, :amount => 233.00, :available => 0)
上述代码行将使用提供的数据向 create 动作中存在清单 2 中的代码的控制器创建一个 HTTP POST。
清单 2. Create
class IndianHistoryController < ActiveResource::Base
def create
@book = IndianHistory.new (params [:indian_history])
respond_to do |format|
if @book.save
flash[:notice] = “New title added successfully”
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created}
else
format.html { render :action => “new” }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity}
end
end
end
end
如果图书记录成功保存,将返回新创建的、状态码为 HTTP 201 的记录,并将使用新创建的记录重定向视图。
同样,您也可以更新和删除记录,主要您拥有执行管理的权限和访问权。
对于 Update 操作,在脚本/控制台中使用:
清单 3. Update
>> book= IndianHistory.find (2) >> book.available = 1 >> book.save >> book = IndianHistory.find (2) >> book.available # => 1
您更新了图书的可用性并保存记录。ActiveResource 和 ActiveRecord 之间有一个细微差别:ActiveResource 中没有方法 save 和 update。
最后,下面的语句将从数据库移除记录。
>> IndianHistory.delete(2)
除了上面介绍的基本操作外,Active Resource 还允许通过设置一个 HTTP 头部来 支持 HTTP 基本身份验证。假如用户名和密码被设置且在身份验证失败时抛出错误,则客户机和服务器连接的安全检查就能通过每个连接上的 Active Resource 身份验证来完成。基本的身份验证也可以轻松实现。
结束语
在本文中,您了解了 web 服务、REST、SOAP 和 Rails Active Resource。一个简单的示例向您展示了 CRUD 操作。
Ruby on Rails Active Resource 包以一种 RESTful 方式提供多个 web 应用程序之间的轻松通信。除了 CRUD 操作外,它还允许您创建自定义动作。










