为了使程序代码更加有组织,以便于维护、便于多人协作开发同时避免名字冲突,将不同功能的代码放到不同的模块中,是很好方法。
在rails中,通过namespace来组织代码(其实是隐去了模块的概念)。
这需要考虑几个方面的问题:
1.table name;
2.migration name;
3.route;
4.controller;
5.view;
6.model;
7.test.
...
下面以在admin名字空间下的post为例来说明如果使用namespace:
一、关于表名:为了避免表名冲突,可以使用admin_posts这样的表名。这样做,要在model中要调用
set_table_name "admin_posts"
有人说这样作违反了"Convention over configuration"的原则,我认为这个原则是为了方便人的使用的,感觉不方便时就不必遵守。当然,如果你是“Convention over configuration 偏执狂”的话,直接使用posts作为表名也是一样的,毕竟如何组织表名并不是rails的职责。只不过这时要考虑避免表名冲突。
二、关于迁移文件名:同样可以依你的喜好考虑是不是使用create_admin_posts这样的文件名。我有个朋友更干脆,每个模块建一个迁移文件!代码组织很整齐。不过,需要更改时他就会哭了。
三、关于route,这个没有什么有说的。
map.namespace :admin do |admin|
admin.resources :posts
end
四、controller中:由于model在namespace中,用到model的地方,如果不在同一个namespace中时,要使用其qualified name,即写成
Admin::Post
的形式。另外还有一处要注意,与view有关。下面再说。
五、view中:与namespace相对应,params[:post]改成了params[:admin_post],因此,controller中要用params[:admin_post]。
六、model中:除了前面提到的set_table_name外,如果要关联其它namespace中的model时,要指定:class_name,还要用qualified name。同一个namespace中则不用(好象通过中间Model的多对多关联时也要用qualified name)。
什么?又来了!我又听见有人在说”Convention over configuration”的事,说什么使用了:class_name就不Convention over configuration了。我觉得这里使用:class_name是很自然的事情。难道还有其它解决办法吗?
七、关于test:惨了,写了这么多年程序,从来没写过测试代码。因为我不会写,所以我不知道该怎么处理。还请哪位达人来说一说。看来我也要学一学了。
最后是关于scaffold生成使用namespace的代码问题。
目前,用scaffold可以生成使用namespace的代码。但是,不能运行!
以前就听人说过:如果你目前不使用scaffold还不能编写rails程序,那就暂时不要用namespace!
不过scaffold确实还为我们做了大量工作,如果你喜欢用还是可以用的,只是要做些修改:
1.Scaffold生成的表名是admin_posts形式的,所以在model中要加上set_table_name(或者你也可以将表名改成posts的形式);
2. Scaffold生成的migration文件名是create_admin_posts形式的,当然你也可以改;
3. Scaffold生成的controller#index中,实例变量名是@admin_post 与view中不一致,改成@post就好了,params[:post]要改成params[:admin_post],以与view中的一致。至于那些url 也要改了。
4.view中的url也要改了。
5.route中的
map.resources :posts
改成
map.namespace :admin do |admin|
admin.resources :posts
end
别问我测试代码要怎么改,我也不知道!
好了,就这些,可以用了。
Scaffold还是方便一点啊。
Scaffold只是一个工具,能为我们做到这些已经不错了。当然我们希望Scaffold能更好!
分享到:
- 2009-11-10 11:03
- 浏览 935
- 评论(5)
- 论坛回复 / 浏览 (5 / 3188)
- 查看更多
相关推荐
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
本书由蔡望勤(Jesse Cai)撰写,他是一位资深的 Ruby 开发者,自2006年起便致力于 Ruby on Rails 的开发工作,同时也是中国 Rails 社区的创始人。书中不仅涵盖了 Ruby on Rails 的基础知识,还深入探讨了如何结合...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性。在这个开发环境包中,我们拥有Ruby ...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循敏捷开发原则,致力于简化Web开发过程。Rails的核心理念是“Convention over Configuration”(约定优于配置),这意味着开发者可以减少大量...
综上所述,《Rails敏捷开发,我的成功之路》这本书不仅适合Rails初学者入门,也适合有一定经验的开发者深入学习和提高。通过阅读本书,你可以全面了解Rails框架的特点和优势,并学会如何运用敏捷开发的方法来构建高...
"Ruby中文文档"可能包括了对Ruby语法、类、对象、模块、方法等基础知识的介绍,以及Rails框架的核心概念,如路由(Routing)、控制器(Controllers)、视图(Views)、模型(Models)、ActiveRecord、助手方法...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,极大地简化了Web应用的开发过程。Rails的哲学是“约定优于配置”,鼓励开发者遵循一套标准的...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,同时强调“约定优于配置”的原则。在本实例开发中,我们将探讨如何...
学习rails框架开发的必备书籍。。。。。。。。。。。。。
标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它基于Ruby编程语言。...同时,这也是一个绝佳的机会去实践敏捷开发和TDD(测试驱动开发)原则,提升你的Web开发技能。
Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它遵循模型-视图-控制器(MVC)的架构模式,设计用来快速开发数据库驱动的动态网页。随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助...
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...
Rails以其“约定优于配置”(Convention over Configuration)和“Don't Repeat Yourself”(DRY,不要重复自己)的原则,极大地提高了开发效率和代码可读性,成为了Web2.0时代敏捷开发的首选工具。 在Ruby on ...
Ruby on Rails,简称Rails,是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。本示例源码提供了使用Ruby on Rails进行实际项目开发的具体...
8. **版本控制**:描述中提到的"web开发敏捷之道-rails第二版"可能指的是随着Rails框架版本的更新,代码也进行了相应的适应。Rails版本更新可能会引入新的特性或改变旧的行为,因此代码调整是必要的。 9. **安全和...
- **Ruby的社区与资源**:Ruby拥有一个活跃的社区,Ruby on Rails的快速发展与这个社区的贡献是分不开的。 ### Rails的安装与配置 - **Rails的安装环境**:文档提到了在Windows和Linux操作系统上安装Rails的步骤,...
Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY(Don't Repeat Yourself)原则和开发效率。 Rails的核心特性包括: 1. **约定优于配置**(Convention Over Configuration):...