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: 
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值