`
SwiftHorse
  • 浏览: 213727 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

Rails命名约定之—— 混合大小写,下划线和复数

阅读更多

  我们经常使用短语来命名变量和类。在Ruby里通常约定变量的名字全是小字母,单词之间用下划线隔开。类和模块命名则不同:它们没有下划线,短语中采用混合大小写模式——即每个单词的第一个字母以大写开头。这些约定会这样命名变量,比如order_status,和类名字如LineItem。
  

  Rails中采用了这种命名约定并以两种方式进行了扩展。
    

  首先,它假定数据库的表名和变量名一样,都是小写字母,单词之间是下划线。Rails还假定表名总是复数形式。
    

  另一方面,Rails假定文件以带有下划线的小写字母命名。
Rails使用这些命名约定来自动转换名字。例如,你的应用程序可能包含一个model类,它用来处理商品项目。你已经使用Ruby的命名约定来定义这个类,叫LineItem。通过这个名字,Rails将自动推论出以下的规则:

  
1、对应的数据库表名被称为line_items。这是类名字,被转换成小写字母,并在单词和复数之间使用了下划线。
2、Rails也将知道从一个叫line_item.rb(在app/models目录中)的文件中去寻找类LineItem的定义。
Rails的controller也有额外的命名约定。如果我们的应用程序有一个名为store的controller类,那么会发生以下一些情形:
1、Rails假定类被称为Store的Controller类,并且它是定义在app/controllers目录下store_controller.rb的文件中。
2、它也假设有一个helper模块,它是位于app/helpers目录下的store_helper.rb中。
3、它缺省地接受负责输出的views中的layout 模板存放在目录app/views/layouts/下的store.rhtml或者store.rxml中。
还有些要注意的。


  通常情况下,当你第一次引用Rails不知道的类或模块时,Rails使用命名约定来转换类名字为文件名,并试图在后台加载这个文件。这样的好处是不言而喻的,你可以直接引用model类名,这个model将自动加载到你的应用程序中。
正如你所看到的,这种模式在你的类被存储到sessions中时会行不通。因此你必须要明确地声明。即使这样,你也不必使用require。相反,你的控制器只要包含一行,像这样:


class StoreController < ApplicationController
 model :line_item
 # ...

  注意这里的命名约定是如何做到一致的。“:line_time”是带有下划线的小写,它将会把line_item.rb加载进来,这个文件包含类LineItem。

分享到:
评论

相关推荐

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    总之,配置Ruby on Rails与MySQL环境虽然需要一些步骤,但只要按照指南一步步操作,大部分开发者都能成功完成。记得在配置过程中遇到困难不要灰心,多尝试、多搜索,一定能够找到解决方案。通过这样的实践,你将对...

    《Web开发敏捷之道——应用Rails进行敏捷Web开发,第2版》书籍配套代码(zip)

    《Web开发敏捷之道——应用Rails进行敏捷Web开发,第2版》是一本深入探讨使用Ruby on Rails框架进行高效敏捷Web开发的专业书籍。该书通过理论与实践相结合的方式,旨在帮助开发者掌握Rails的核心概念和最佳实践,...

    Groovy need not rails——介绍自己写的一个基于groovy的框架,Webx

    2. **DSL支持**:Groovy的强大之处在于其领域特定语言(DSL)能力,Webx可能会提供一套内建的DSL,让开发者能以更简洁的方式定义路由、操作和视图。 3. **自动化工具**:基于Groovy的框架通常会包含一系列自动化...

    rails指南 中文版

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    通过以上介绍,我们不仅了解了Rails的基础知识,还深入探讨了其核心组件——Active Record的相关概念和技术细节。这些内容对于初学者来说是非常宝贵的入门资料,同时也是进一步学习和实践的基石。随着对Rails的深入...

    Ruby on Rails 指南 v5.0.1 中文版

    - **控制器命名约定**:说明控制器命名的规则和约定。 - **方法和动作**:描述控制器中方法和动作的关系。 - **参数**:介绍如何处理HTTP请求中的参数。 - **会话**:解释Rails中的会话管理机制。 - **cookies**:...

    Advanced Rails

    在Web开发领域,Rails以其高效、简洁的代码和“约定优于配置”的哲学吸引了众多开发者。通过深入理解"Advanced Rails",开发者可以掌握以下关键知识点: 1. **优化性能**:Rails应用在处理大量请求时可能会面临性能...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    route_downcaser:使Rails中的路由不区分大小写

    默认情况下,Rails的路由系统是区分大小写的,这意味着用户在访问URL时必须严格按照定义的大小写模式输入。然而,在某些场景下,如为了提供更友好的用户体验或者遵循某些编程规范,开发者可能希望路由不区分大小写。...

    Ruby_On_Rails笔记

    Rails项目包含了许多默认文件和目录,这些文件和目录遵循特定的命名和组织规范。例如,Rails中的控制器文件通常位于app/controllers目录下,且文件名需以Controller结尾,类名则遵循小写和下划线命名约定。例如,...

    muchtodo:rails 练习应用程序——一个简单的待办事项列表(Rails)

    这是我的第一个非教程引导 Rails 应用程序! 这是一个简单的待办事项列表,仅用于学习目的,但它仍然非常具有挑战性。 你可以玩它。 我没有包含用户登录/身份验证的内容,因为我希望这是一个为期一周的项目,而且...

    HeadFirst系列之:深入浅出Rails(中文版)高清完整PDF

    你将学习一切Rails scaffolding的基本原理,以创建自定义的交互式网络应用程序,全部使用Rails的一套丰富的工具和MVC框架。 你将掌握数据库交互、Ajax和XML的集成、丰富的内容,甚至数据的动态图形——曾经要使用...

    Rails

    1. **约定优于配置**(Convention Over Configuration):Rails通过默认的约定减少开发者需要明确配置的细节,如数据库表名与类名的对应关系。 2. **Active Record**:这是Rails中的ORM(对象关系映射)库,它允许...

    ruby on rails 实践

    标题与描述中的“Ruby on Rails 实践”及“ruby 和 java 的结合”,暗示了一种对两种截然不同的编程环境——Ruby on Rails与Java——进行对比分析的视角。Ruby on Rails,以其简洁、高效且遵循“约定优于配置”的...

Global site tag (gtag.js) - Google Analytics