database.yml文件保存着数据库的连接信息。这个文件在first_rails\config中。其中有三个标签: development、test和production。从理论上它们应该描述三个不同的数据库。这三个数据库的结构应该是完全一样的。它们分别用在开发、测试和产品发布上。从而使这些工作不互相冲突。
在本例中只需要修改password项即可(将其设置为root的密码)。
第四步 生成web程序代码
执行如下命令
| ruby script/generate scaffold Record Admin |
第五步 启动服务
执行如下命令
| ruby script/server |
到现在为止,这个web程序已经生成完毕。它可以对records表进行基本的增、删、改操作。在IE中输入http://localhost:3000/admin可对records进行相应的操作。界面如图3所示。
![]() 图3 autoweb的首页 |
点击"New record"可增加一条新记录以及进行其它操作。
三、使用活动记录(Active Record)进行数据映射
在上面给出的例子中也许有一个地方最令人迷惑。就是在上述五步中并未给出要操作的是哪一个表。那么rails如何得知我们要操作records表呢?这一点就要从rails中的活动记录说起。
Rails提供了一种非常方便的数据映射机制 - 活动记录。这种机制可以使用尽可能少的代码将一个数据表映射成ruby对象。为了达到这一目的,rails给出了一些约定。如上面的例子的第四步中使用了 Record作为映射数据表的类名,而如果不明确指定所映射的表名时,rails就将这个类名后加s作为表名,即records。下面的代码是一个关于活动记录的例子。
| require 'rubygems' require_gem 'activerecord' class Record < ActiveRecord::Base # set_table_name('tablename') establish_connection( :adapter => "mysql", :host => "localhost", :username => "root", :password => "password", :database => "autoweb_development" ) end record = Record.new record.title = 'abc' record.content = 'aabbcc' record.dt = Time.now if record.save puts '增加记录成功!' else puts '增加记录失败!' end |
运行它 ruby map.rb
上面的代码有4点需要注意一下
1. 活动记录必须从ActiveRecord::Base继承。
2. 除了使用databvase.yml设置数据库连接信息外,还可以通过establish_connection将数据库连接信息写在程序中。
3. 使用活动记录映射数据表一般并不需要将表中的每个字段定义在类中,默认情况下这字段名就是类的属性名。
4. 如果不想使用约定来确定表名,可以通过set_table_name指定其它的表名。

