2.3 应对新需求
我们已经为firstApp应用完成了用户注册和登录功能,当然这个功能实在太过简单。假设用户提出了新需求:希望用户登录该系统后,能够添加留言,浏览所有留言,查看具体的一条留言和删除留言。也就是说,他希望将这个应用扩展成一个小型的留言系统。
这时候就是Rails敏捷开发大展身手的时候了:当应用的需求发生变更时,它可以非常容易地在原有应用的基础上进行扩充,增加新的功能,这也是Rails被称为敏捷开发框架的原因。
现在,我们已经确定了需要将firstApp应用改变为一个留言系统。那么,先修改该应用的标题:在/views/layouts路径下的user.rhtml视图文件中,将title中的文本由原来的“第一个Web应用”标题修改为“欢迎光临留言系统”,并将id="header-section"的div标签中的文本由原来的“第一个Web应用”修改为“留言系统”。此外,为了使得留言的视图文件和用户的视图文件能共用一个相同的装饰页面,把user.rhtml视图文件重命名为application.rhtml。
2.3.1 添加Model
将本Web应用扩充为一个留言系统,首先需要添加一个留言Model,这个Model对应数据库中的留言表。下面,在数据库中创建一个新的数据表,该表的MySQL脚本如下。
-- 创建留言表:messages |
我们将数据库中的留言表定义成messages,该表中定义了一个picture字段,用来存放用户贴图在系统中的路径;而定义的user_id字段则是messages表参照users表的外键。此外,根据Rails的表对应类的约定,该表将对应Model中的Message类。
接着,用scaffold代码生成器为Message Model生成基本的CRUD操作,即在DOS窗口进入Rails应用所在的路径下,执行如下命令:
ruby script\generate scaffold Message Message
执行完毕上面的命令之后,Rails会在该应用中为我们自动生成Message Model的支架。
在浏览器的地址栏输入http://localhost:3000/message或http://127.0.0.1:3000/message,将会看到可以列出所有留言信息的list页面。由于我们尚未添加任何留言,因此该页面中没有任何留言记录。单击页面下方的New message链接,将会进入添加留言的页面,如图2.9所示。
|
| 图2.9 添加新留言 |
读者会注意到,图2.9中的Picture data域是一片空白,而Picture content type域是一个单行文本框,不是一个文件域。这是因为,我们的messages表中picture字段是定义成varchar类型的。所以,Rails就会将它当成一个文本字段来处理,在模板中将它设计成一个单行文本框。这只是视图模板,不用担心,因为在后面完善这个firstApp应用时,我们还要修改这里。
另外,由于messages表中定义了不允许为空的user_id字段,而添加留言的页面中没有留言人的输入框(也没有必要有该输入框),同时,在scaffold为我们生成的message_controller.rb控制器文件中,用于添加一条留言记录的create Action并没有为user_id属性赋值,所以,这时候是不能成功地添加一条留言记录的。由此可看出,尽管scaffold代码生成器的功能十分强大,但仅仅使用它也并不是万能的,这是肯定的!它只是生成一个具有基本的CRUD操作的支架,不可能完成整个应用的所有功能。这就需要程序员在scaffold生成的代码的基础上进行修改和完善,这也就是我们下面几节将要介绍的内容。
| 回书目 上一节 下一节 |
|
· 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. · 全国计算机等级考试四.. · 软件项目估计:第2版 |
· 系统分析师基础知识自.. · 构建可扩展的Web站点的.. · 2008年全国计算机等级.. · 网络数据安全与保密自.. · 博客园开发者征途:.NE.. · ASP.NET 2.0 WEB开发入.. |
|
||||
| · 2008年春季英特尔信息.. · 技术人求职简历完备手册 · 国际文档格式标准开战 · WCF开发基础 · Visual Studio 2005开.. · Linux——从菜鸟到高手 · 如何优化IT 控制能耗 · SQL Server入门到精通 |
· SQL Server 2008/2005.. · 贝恩资本携手华为22亿.. · ARP攻击防范与解决方案 · 初探敏捷开发 · 体验Visual Studio 200.. · SOA 面向服务架构 · CISSP认证成长之路 · 隐私保护技术探讨 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · SQL Server入门到精通 |
· 病毒查杀专题 · 国际文档格式标准开战 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · SOA 面向服务架构 · ADSL应用面面俱到 · 入侵防护系统(IPS)初探 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 |
· 病毒查杀专题 · 清除流氓软件——51CTO.. · Sniffer安全技术从入门.. · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 |
|||