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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值