程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 的 pureXML 特性與 Ruby on Rails

DB2 的 pureXML 特性與 Ruby on Rails

編輯:DB2教程
XML 是當今 Web 最常用的數據交換格式之一。DB2® 對 pureXML™ 的支持以及與 parsing and generating XML API(REXML)的結合,為 Web 應用程序開發提供了強大的技術組合。DB2 數據服務器中的本地 XML 支持引入了極大的靈活性,通過使用 DB2 的混合型數據庫引擎編譯器和解析器(可同時使用 SQL 和 XQuery),能夠混合存儲半結構化的具有層次結構的 XML 文檔和關系數據。在 Ruby on Rails 系列 的第二篇文章中,我們將演示如何在第一篇文章的 Team Room 示例中利用 pureXML 特性。

  簡介

  在 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::Migration
  def self.up
    add_column    :users, :userid,      :string, :limit => 8
    add_column    :users, :hash_passwd, :string
    add_column    :users, :salt,        :string
  end

  def self.down
    remove_column :users, :userid
    remove_column :users, :hash_passwd
    remove_column :users, :salt
  end
end

  c) 運行 rake db:migrate,在 USERS 表中添加這些新列。

  步驟 2. 讓主題可供多個用戶訂閱

  在第一篇文章描述的 Team Room 中,每個主題只能屬於一個訂閱。每個訂閱是一個用戶已經訂閱的主題集合,這讓我們的 Team Room 相當不真實,因為一個用戶選擇了某個主題之後,Team Room 中的其他用戶就不能再訂閱這個主題了。

  隨著 Team Room 的流行,許多成員希望訂閱同一個主題。成員的這種要求是正常的,應該允許對同一主題進行多次訂閱。在更新的 Team Room 中,一個用戶可以通過一個訂閱訂閱許多主題。為了實現這一修改,需要執行以下步驟:

  •   以前在 SUBSCRIPTIONS 和 SUBJECTS 之間存在一對多關系。但是,每個主題只能
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved