热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>编程开发>Ruby>

Ruby on Rails:活动记录纵览

来源: 作者: 时间:2007-09-12 Tag: 点击:

 实例

  这个登录程序非常简单。下面将描述这个程序的基本功能:

  这个程序有一个窗口允许用户输入用户名和密码。在输入用户名和密码后,系统将会验证它们的合法性。在用户登录后,系统将这个用户的信息记录在session中,直到它们注销登录。

  下面将描述组成系统的模块:

  User.rb - 数据表(users)的映射
  login_controller.rb - 控制前端和后端的数据流
  login.rhtml - 显示登录界面

  下面是建立users表的SQL语句:

create table users (
id int not null auto_increment,
name varchar(100) not null,
password char(40) null,
primary key (id);
}

  接下来我们处理数据表映射类。由于我们正在使用RoR中的活动记录。因此,除了可以使用establish_connection方法连接数据库外,我们还可以使用config目录中的database.yml文件来描述数据库连接信息。如下是在database.yml的development中的设置情况:

development:
adapter: mysql
database: test
encoding: gb2312
username: root
password: 1234
host: localhost

  然后使用以下命令建立数据表映射类User:

ruby script/generate model User

  这个User类包含两个方法:try_to_begin(这个方法调用login方法)和login。代码如下:

class User < ActiveRecord::Base
def self.login(name, password)
find(:first, :conditions =>
["name = ? and hashed_password = ?", name,password])
end
def try_to_login
User.login(self.name, self.password)
end
end

  Login方法使用了find方法查询users表中的记录,并进行验证。这个方法的逻辑是非常简单的:try_to_login方法通过controller被调用。然后将用户名密码传入login方法中。Login方法返回包含用户名和密码的数据对象。

  接下来我们使用如下命令建立控制类:

ruby script/generate controller Login

  以下代码是控制类的实现,其中包括数据验证和处理session。

class LoginController < ApplicationController
def login
@user = User.new(params[:user])
logged_in_user = @user.try_to_login
if logged_in_user
session[:user_id] = logged_in_user.id
redirect_to(:action => "index")
else
flash[:notice] = "不正确的用户名和密码!"
end
end
end

  下面是login.rhtml的代码

<% @page_title = "增加一个用户" -%>

<%= error_messages_for 'user' %>

<%= form_tag %>

<table>

<tr>

<td>User name:</td>

<td><%= text_field("user", "name") %></td>

</tr>

<tr>

<td>密码:</td>

<td><%= password_field("user", "password") %></td>

</tr>

<tr>

<td></td>

<td><input type="submit" value=" ADD USER " /></td>

</tr>

</table>

<%= end_form_tag %>

  到现在这个程序已经完成了。如果你将这个应用程序和使用其它语言编写的同样的应用程序相比,基于RoR的应用程序的代码是非常少的。本文只是对活动记录的主要功能进行简单的描述,如果读者对其感性趣,可以查阅相关的文档了解更详细信息。


最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表