命名约定概念详解
1. 混合大小写,下划线,复数
我们经常使用简写命名变量,在Ruby中,约定为命名变量时,全部字母都小写,单词的中间使用下划线分割,类(Class)和Modules的命名
有不同,不使用下划线,单词的简写和首字母使用大写。所以我们在前面编写的代码里有order_status和LineItem这样的类名。
Ruby on Rails命名约定并且作了扩展。首先假定数据库中表名和变量命名一样,采用全小写字母,并且单词中间使用下划线分割,并且表明都是复数形式的,例如:orders,third_parties。同时,Rails假定文件的命名也使用小写和下划线。
Rails根据这些约定自动进行名字的转换,例如,你的程序里或许包含一个Model类来操作line item,你可以使用Rails的命名约定,把这个类命名为LineItem,根据这个名字,Rails会作下面的推断:
数据库里的表名为line_items。
在app/models目录下有一个line_item.rb文件。
Rails的控制器(Controller)的命名有另外的约定,如果你的程序里有一个store的Controller,Rails会作下面的推断:
有一个类叫做StoreController,并且在app/controllers目录下有一个store_controller.rb文件。
在app/helpers目录中,有一个文件叫做store_helpers,里面的类名叫做StoreHelper。
在控制器对应的目录app/views/store来查找视图模板。
获得视图的输出,并且把他们转换到app/views/layouts目录下的store.rhtml或者store.rxml的布局模板中。
通常在ruby的代码中,我们使用require关键字来将一些文件中的类引入到当前的代码中,因为Rails知道文件名和类名之间的关系,所以
require关键字在Rails程序中不是必须的,在你引用一个不知道名字的类或者module的时候,Ruby on
Rails命名约定将类名转换成文件名,并且加载这个文件,效果就象你通过名字引用一个model,然后这个model自动被加载到程序中。
就象你所看到的,这个模式在类被存储到session中时被打破了,在这种情况下我们要明确的声明他们,例如,我们在控制器(controller)里:
class StoreController < ApplicationController
model :line_item
在这里,命名规约还在使用,标记:line_item全部小写并且用下划线分开,这会使line_item.rb文件被加载,而这个文件中包含有类LineItem。
2. 把控制器(controller)分组到模块中
现在,我们的所有的controller都放在app/controller目录下,有时候我们的controller可能比较多,为了不污染到顶层的命名空间(namespace),我们可以选择将某几个controller归组到一个单独的命名空间里。
对此,Rails有一个简单的约定,如果一个请求(request)包括了controller的名字,例如:admin/book,Rails会
在app/controller/admin/目录下寻找名为book_controller的控制器,控制器名字的最后部分将会变换成
name_controller.rb,并且将会从app/controller目录开始,根据请求的前半部分(这里是admin)来定位到子目录里。
想像一下我们的程序有这样的两组controller,admin/xxx,content/xxx,并且两组里面都有一个控制器book,这样在
app/controller目录的两个子目录app/controller/admin和app/controller/content里都有一个
book_controller.rb文件,里面又都有类BookController,如果Rails不作额外处理,将会造成冲突。
为了处理这种情况,Rails采取的办法是,在这两组controller的目录里的book_controller.rb文件中类的声明前添加控制器所在组的名字,例如,admin目录里的book_controller.rb文件中的类声明是这样:
class Admin::BookController < ApplicationController
# ...
end
而content目录下的类声明是这样:
class Content::BookController < ApplicationController
# ...
end
这样,两个book_controller就可以被区分开了。
在web浏览器里对controller发出请求时,这样:
http://my.app/admin/book
在使用Rails的命令行生成controller的时候,直接在类名前加上组的名字就可以了,例如:
myapp> ruby script/generate controller Admin::Book action1 action2 ...
安装plugin时,可能会允许一些rake,最好用命令安装,不然会少允许一些rake等。
2.添加字段--rails 的数据库迁移任务
以AddXXXToYYY的方法生成迁移任务
ruby script
/generate
migration AddPartNumberToProducts part_number:string
添加多个字段
ruby script
/generate
migration AddDetailsToProducts part_number:string price:decimal
将迁移实施到真正的数据中去
rake db:migrate
反悔-回滚
rake db:migrate VERSION=23
分享到:
相关推荐
标题“Rails学习资料”表明这是一份关于Rails框架的学习资源,可能包含教程、示例代码、最佳实践等内容,适合初学者和有一定经验的开发者。描述中的“仅仅三分,就可以帮助你搭好框架”,暗示这份资料可能包含快速...
收集了常用RAILS学习的网址 收集了常用RAILS学习的网址
本“rails学习教程”PDF文档将涵盖以上所有内容,通过详尽的实例和解释,帮助你从新手到熟手,全面掌握Rails开发。无论是想从事Web开发职业,还是想要提升个人项目开发能力,这都是一份不可多得的学习资料。
### Rails 101 入门电子书知识点详解 #### 一、简介 ...通过以上内容的学习,初学者可以全面掌握Ruby on Rails的基础知识,包括环境搭建、基本操作、高级特性等,为后续更深入的学习打下坚实的基础。
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
标题 "rails查询学习笔记" 涉及的是Ruby on Rails框架中的数据库查询技术。Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发Web应用更加高效...
"ruby on rails 学习资料pdf"可能是综合性的学习指南,包含了从初学者到进阶者的各种主题,包括Rails的安装和配置、模型关系、控制器逻辑、视图渲染、部署到生产环境等。 "ruby on rails环境搭建.doc"会详细指导你...
Ruby On Rails是一个用于编写网络应用程序的软件包.它基于一种计算机软件语言Ruby,给程序开发人员提供了强大的框架支持.本书介绍了rails的基本使用,深入扩展,练习挺多的
标题中的"rails的经典学习项目"暗示了这是一个用于学习和理解Rails框架的实例。通过分析Rails项目,新手可以了解到如何在实际环境中构建功能完备的Web应用。Rails项目通常包括数据库设计、控制器逻辑、视图模板以及...
本资源为"Ruby on Rails Web开发学习实录随书光盘"的源代码,是清华大学出版社出版的相关书籍的配套资料,旨在帮助读者深入理解和实践Rails开发。 1. **Ruby基础知识**:Ruby是一种面向对象的、动态类型的编程语言...
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...
本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是学习Ruby on Rails的理想选择。 ### 重要知识点概览 #### 1. Introducing Ruby on Rails(介绍Ruby on Rails) 这一章节...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其...通过阅读相关的博客文章(如给出的链接),开发者可以深入学习这两个工具的细节,提升自己的技能水平,从而更好地应对各种项目挑战。
学习Rails指南中文版,开发者将全面了解Rails的各个方面,包括基础概念、核心组件、最佳实践以及如何构建完整的Web应用。此外,Rails社区活跃,有大量的插件和gem可供扩展,为开发者提供了丰富的资源和强大的支持。...
在深入学习Rails之前,掌握Ruby语言是必不可少的。Ruby是一种面向对象的、动态的、简洁的脚本语言,它强调代码的清晰性和可读性。Ruby的语法优雅,支持块、闭包和元编程,这使得Ruby在编写Rails应用时能够实现高度的...
综合以上信息,学习和掌握Rails需要理解其核心组件和设计理念,熟练使用相关工具,阅读源码以加深对框架运作的理解,并通过实践项目来巩固理论知识。Rails是一个强大且高效的Web开发框架,它简化了许多常见的开发...
学习rails框架开发的必备书籍。。。。。。。。。。。。。
以上就是Ruby on Rails学习案例中涵盖的关键知识点,通过实践这些概念和技术,你将能够构建出功能完善的Web应用程序。在"Learning-Ruby-on-Rails-master"这个项目中,你可以找到具体的代码示例和练习,逐步加深对...
- **学习路径**:继续深入学习Rails的高级特性,如Active Record模式、表单构建器等。 - **社区资源**:加入Rails官方论坛、Stack Overflow等社区获取帮助和支持。 #### 十一、文档编写技巧 - **重要性**:良好的...