`
zqjshiyingxiong
  • 浏览: 437808 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

疯狂的学习Rails

    博客分类:
  • RUBY
阅读更多

命名约定概念详解

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学习的网址 收集了常用RAILS学习的网址

    rails学习教程

    本“rails学习教程”PDF文档将涵盖以上所有内容,通过详尽的实例和解释,帮助你从新手到熟手,全面掌握Rails开发。无论是想从事Web开发职业,还是想要提升个人项目开发能力,这都是一份不可多得的学习资料。

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 ...通过以上内容的学习,初学者可以全面掌握Ruby on Rails的基础知识,包括环境搭建、基本操作、高级特性等,为后续更深入的学习打下坚实的基础。

    rails查询学习笔记

    标题 "rails查询学习笔记" 涉及的是Ruby on Rails框架中的数据库查询技术。Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发Web应用更加高效...

    ruby on rails 学习资料

    "ruby on rails 学习资料pdf"可能是综合性的学习指南,包含了从初学者到进阶者的各种主题,包括Rails的安装和配置、模型关系、控制器逻辑、视图渲染、部署到生产环境等。 "ruby on rails环境搭建.doc"会详细指导你...

    rails学习免费书籍

    Ruby On Rails是一个用于编写网络应用程序的软件包.它基于一种计算机软件语言Ruby,给程序开发人员提供了强大的框架支持.本书介绍了rails的基本使用,深入扩展,练习挺多的

    rails的经典学习项目

    标题中的"rails的经典学习项目"暗示了这是一个用于学习和理解Rails框架的实例。通过分析Rails项目,新手可以了解到如何在实际环境中构建功能完备的Web应用。Rails项目通常包括数据库设计、控制器逻辑、视图模板以及...

    Ruby on Rails Web开发学习实录随书光盘(源代码).

    本资源为"Ruby on Rails Web开发学习实录随书光盘"的源代码,是清华大学出版社出版的相关书籍的配套资料,旨在帮助读者深入理解和实践Rails开发。 1. **Ruby基础知识**:Ruby是一种面向对象的、动态类型的编程语言...

    Rails项目源代码

    这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...

    rails2-sample

    本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是学习Ruby on Rails的理想选择。 ### 重要知识点概览 #### 1. Introducing Ruby on Rails(介绍Ruby on Rails) 这一章节...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其...通过阅读相关的博客文章(如给出的链接),开发者可以深入学习这两个工具的细节,提升自己的技能水平,从而更好地应对各种项目挑战。

    rails指南 中文版

    学习Rails指南中文版,开发者将全面了解Rails的各个方面,包括基础概念、核心组件、最佳实践以及如何构建完整的Web应用。此外,Rails社区活跃,有大量的插件和gem可供扩展,为开发者提供了丰富的资源和强大的支持。...

    中文版rails教程

    在深入学习Rails之前,掌握Ruby语言是必不可少的。Ruby是一种面向对象的、动态的、简洁的脚本语言,它强调代码的清晰性和可读性。Ruby的语法优雅,支持块、闭包和元编程,这使得Ruby在编写Rails应用时能够实现高度的...

    Rails

    综合以上信息,学习和掌握Rails需要理解其核心组件和设计理念,熟练使用相关工具,阅读源码以加深对框架运作的理解,并通过实践项目来巩固理论知识。Rails是一个强大且高效的Web开发框架,它简化了许多常见的开发...

    rails开发技术必备书籍

    学习rails框架开发的必备书籍。。。。。。。。。。。。。

    Ruby on Rails 学习案例

    以上就是Ruby on Rails学习案例中涵盖的关键知识点,通过实践这些概念和技术,你将能够构建出功能完善的Web应用程序。在"Learning-Ruby-on-Rails-master"这个项目中,你可以找到具体的代码示例和练习,逐步加深对...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **学习路径**:继续深入学习Rails的高级特性,如Active Record模式、表单构建器等。 - **社区资源**:加入Rails官方论坛、Stack Overflow等社区获取帮助和支持。 #### 十一、文档编写技巧 - **重要性**:良好的...

Global site tag (gtag.js) - Google Analytics