`
jiajie0531
  • 浏览: 27812 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Active Record Basics 2 Convention over Configuration in Active Record

阅读更多
version:  rails4
 
2. 在Active Record中,约定俗成取代配置文件
 
当在写应用程序时,使用其他的编程语言或者框架,可能会需要写大量的配置相关的代码。一般来说这确实存在于ORM框架中。然而,如果你遵守Rails中的一些约定,当创建Active Record模型时,你将只需写少量的配置代码(在有些情况下甚至没有配置)。建议就是,如果在大多数时候你都是用同一种方式来配置你的应用程序,那么这就应该是默认的方式。因此,明确的配置只会在某些情况下是需要的,尤其是在你不能够适用标准约定的时候。
 

2.1 Naming Conventions

命名约定
 
默认的情况下,Active Record会用一些命名约定来找出在models和数据表之间的映射是如何被创建的。Rails会把你的类名复数化,用来找到对应的数据表。因此,对于一个类Book,你应该有一个数据表名称为books。Rails的复数化机制是非常强大的,对于规则和不规则单词都能够复数化(单数化)。当适用的类名由两个或者更多的单词构成,model的类名应该遵守Ruby的约定,用驼峰命名法,而数据表名的单词间则必须用下划线来间隔。例如:
  • 数据表----复数化是对于下划线间隔后的单词(e.g., book_clubs
  • model类名——单数化是对于每个单词的第一个字母要大写(e.g., BookClub
Table / Schema
posts
line_items
deers
mice
people
Model / Class
Post
LineItem
Deer
Mouse
Person

2.2 Schema Conventions

约定模式
 
Active Record对于数据表中的列使用命名约定,是取决于这些列的目的。
 
  • 外键 Foreign keys ——这些字段的命名应该遵循下面的模式singularized_table_name_id (e.g., item_idorder_id). 当你创建models之间关联的时候,这些是Active Record将去寻找的字段。
  • 主键 Primary keys —— 默认的情况下,Active Record将会使用一个整数列来命名id,作为table的主键。当使用Active Record 迁移( Active Record Migrations)来创建你的数据表,这个列会自动被创建。
这儿还有一些可选项的列名,将会增加一些额外的特征到Active Record实例中:
  • created_at —— 当记录首次被创建时,自动获取当时的日期时间。
  • updated_at —— 无论何时记录被修改时,自动获取当时的日期时间。
  • lock_version —— 对于一个model增加乐观锁定 optimistic locking 
  • type —— model使用单表继承的说明 Single Table Inheritance.
  • (assoiciation_name)_type —— 保存多态性的类型 polymorphic associations.
  • (table_name)_count —— 用来缓存属于对象关联性的数量
例如,一个列 comments_count在一个类Post中,有许多Comment的实例将会缓存对于每一个post中存在的comments的数量。
 
p.s.
而这些列名是可选的,事实上他们都是被Active Record所保留的。避开这些保留的关键词,除非你想要实现特别的功能。例如,type是一个保留词,用来指定一个数据表使用单表继承(STI)。如果你没有使用STI,可以尝试一个类似的关键词,就像“context”,可以依旧精确地描述你所建模的数据。
 
 
original text: 
        
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics