簡介
在 Ruby on Rails 系列的第 1 部分中,我們使用 Ruby on Rails 和 DB2 構建了一個 Team Room 示例,這個應用程序允許注冊的成員共享各種文本文檔、圖像文件和 XML 文檔。為了管理不斷增加的共享文檔集合,您學習了如何按類別對文檔分組。然後,學習了如何添加訂閱特性,這樣當用戶訂閱的文檔類別中添加了新文檔時,我們就可以通過電子郵件通知他們。在第一篇文章的末尾,成員能夠將不同類型的文件上載到 Team Room,文件被存儲在後端 DB2 數據服務器中。現在,我們進一步增強 Team Room,提供更高級的用戶特性和更好的資源訪問。
步驟 1. 添加用戶管理特性
首先,在用戶模型和它的底層表持久存儲中增加一些必要的東西,從而支持正確的身份驗證:一個惟一的用戶 id 字符串和一個散列的密碼(使用 SHA 算法和一個偽隨機種子)。可以添加其他用戶屬性(比如有效性、等級等等)來進一步改進這個用戶模型,並對控制器和視圖做幾處修改來支持新用戶的注冊和安全登錄。我們的 Rails 項目放在 D:\rails\teamroom 目錄中,所以下面引用的所有路徑都是 D:\rails\teamroom 目錄中的相對路徑。
a) 執行 ruby script/generate migration add_user_credentials_columns 啟動遷移進程,在 USERS 表中添加必要的列。
b) 編輯 db/migrate/008_add_user_credentials_columns.rb 文件,添加必要的列(見清單 1):
清單 1. 編輯 008_add_user_credentials_columns.rb
class AddUserCredentialsColumns < ActiveRecord::Migrationc) 運行 rake db:migrate,在 USERS 表中添加這些新列。
步驟 2. 讓主題可供多個用戶訂閱
在第一篇文章描述的 Team Room 中,每個主題只能屬於一個訂閱。每個訂閱是一個用戶已經訂閱的主題集合,這讓我們的 Team Room 相當不真實,因為一個用戶選擇了某個主題之後,Team Room 中的其他用戶就不能再訂閱這個主題了。
隨著 Team Room 的流行,許多成員希望訂閱同一個主題。成員的這種要求是正常的,應該允許對同一主題進行多次訂閱。在更新的 Team Room 中,一個用戶可以通過一個訂閱訂閱許多主題。為了實現這一修改,需要執行以下步驟: