在Ruby on Rails中使用Rails Active Resource的教程

2019-09-25 09:43:43丽君
>> 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 操作外,它还允许您创建自定义动作。