從這篇開始,我們來實現一組用戶管理的功能,首先是添加用戶。
1.首先,我們要創建一個表保存用戶信息,並且生成一個對應的model。
創建表的腳本,在phpAdmin裡執行就可以了:
create table users ( id int not null auto_increment, name varchar(100) not null, hashed_password char(40) null, primary key (id) )
然後在命令行生成User的model,如圖:
然後再使用命令行生成controller和view:
Z:\study\ruby\InstantRails\rails_apps\depot>ruby script/generate controller Login add_user login logout delete_user list_users exists app/controllers/ exists app/helpers/ exists app/views/login exists test/functional/ overwrite app/controllers/login_controller.rb? [Ynaqd] a forcing controller force app/controllers/login_controller.rb identical test/functional/login_controller_test.rb identical app/helpers/login_helper.rb identical app/views/login/add_user.rhtml force app/views/login/login.rhtml identical app/views/login/logout.rhtml identical app/views/login/delete_user.rhtml identical app/views/login/list_users.rhtml
如圖:
2.下面修改Views\login目錄下的add_user.rhtml文件的內容如下:
<% @page_title = "Add a User" -%> <%= error_messages_for 'user' %> <%= form_tag %> <table> <tr> <td>User name:</td> <td><%= text_field("user", "name") %></td> </tr> <tr> <td>Password:</td> <td><%= password_field("user", "password") %></td> </tr> <tr> <td></td> <td><input type="submit" value=" ADD USER " /></td> </tr> </table> <%= end_form_tag %>
3.再修改model目錄下的user.rb文件,內容如下:
require "digest/sha1" class User < ActiveRecord::Base attr_accessor :password attr_accessible :name, :password validates_uniqueness_of :name validates_presence_of :name, :password def before_create self.hashed_password = User.hash_password(self.password) end def after_create @password = nil end private def self.hash_password(password) Digest::SHA1.hexdigest(password) end end
在這裡,我們看到使用了SHA1算法來加密password。
OK,現在來看看效果,如圖:
這時候,我們輸入用戶名和密碼,點擊“ADD USER”按鈕,會提示沒有對應的Action,但是我們到數據庫裡,已經可以看到用戶添加進去了,並且密碼已經進行了加密,如圖: