`
jiajie0531
  • 浏览: 29543 次
  • 性别: 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
分享到:
评论

相关推荐

    Blockchain Basics A Non-Technical Introduction in 25 Steps epub

    Blockchain Basics A Non-Technical Introduction in 25 Steps 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Gradle in Action

    It draws on lessons learned from established build tools like Ant and Maven, incorporating and improving upon their best ideas, like full flexibility and convention over configuration. In Gradle, ...

    Active Directory Cookbook, 3rd Edition.pdf

    Covers the basics of searching Active Directory: creating, modifying, and deleting objects, using LDAP controls, and importing and exporting data using LDAP Data Interchange Format (LDIF) and comma-...

    Pro ActiveRecord Databases

    And almost all of those books actually do a great job of introducing you to the basics of Active Record; they go a long way toward getting you started with the library. However, because they ...

    HTML Quick Start Guide Learn The Basics Of HTML and CSS in 2 Weeks epub

    HTML Quick Start Guide Learn The Basics Of HTML and CSS in 2 Weeks 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    人在回路机器学习Human-in-the-Loop_Machine_Learning.pdf

    Human-in-the-Loop Machine Learning is a practical guide to optimizing the entire machine learning process, including techniques for annotation, active learning, transfer learning, and using machine ...

    Blockchain Basics A Non-Technical Introduction in 25 Steps 无水印pdf

    Blockchain Basics A Non-Technical Introduction in 25 Steps 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载...

    Apress.Blockchain.Basics.A.Non-Technical.Introduction.in.25.Steps

    Apress.Blockchain.Basics.A.Non-Technical.Introduction.in.25.Steps.1484226038Apress.Blockchain.Basics.A.Non-Technical.Introduction.in.25.Steps.1484226038Apress.Blockchain.Basics.A.Non-Technical....

    ROS2-IN-5-DAYS-e-book.pdf

    标题所指的《ROS2-IN-5-DAYS-e-book.pdf》是一本专注于教授ROS2基础的电子书,目的是让读者通过五天的学习,理解并掌握ROS2的关键概念和基本操作。 ### 知识点: #### 1. ROS2的安装 - **安装前的准备**:确保有...

    Genetic Algorithms in Java Basics(Apress,2015)

    Genetic Algorithms in Java Basics is a brief introduction to solving problems using genetic algorithms, with working projects and solutions written in the Java programming language. This brief book ...

    Blockchain Basics A Non-Technical Introduction in 25 Steps

    Blockchain Basics A Non-Technical Introduction in 25 Steps

    HTML Basics

    Welcome to HTML Basics. This workshop leads you through the basics of Hyper Text Markup Language (HTML). ...to display in a web browser.

    Blockchain Basics: A Non-Technical Introduction in 25 Steps

    Blockchain Basics: A Non-Technical Introduction in 25 Steps By 作者: Daniel Drescher ISBN-10 书号: 1484226038 ISBN-13 书号: 9781484226032 Edition 版本: 1st ed. 出版日期: 2017-03-16 pages 页数: (276 ) ...

    SystemVue Training Series_Radar Design Basics_v2_JR.pdf

    SystemVue培训系列教材中的《Radar Design Basics_v2_JR.pdf》主要面向初学者,提供基础的雷达设计概念和建模方法。 在培训材料中,首先介绍了SystemVue软件的基本环境和操作方式。SystemVue的基础设计环境包括多个...

    Deep Learning, Vol. 2: From Basics to Practice

    2: From Basics to Practice By 作者: Andrew Glassner Pub Date: 2018 ISBN: n/a Pages: (914 of 1750) Format: PDF Publication Date: February 19, 2018 Language: English ASIN: B079Y1M81K People are using ...

    Cooperative and Graph Signal Processing

    PART 1 BASICS OF INFERENCE OVER NETWORKS CHAPTER 1 Asynchronous Adaptive Networks CHAPTER 2 Estimation and Detection Over Adaptive Networks CHAPTER 3 Multitask Learning Over Adaptive Networks With ...

    Genetic Algorithm in Java Basics

    Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specifcally for the purpose of being entered and executed on a computer ...

    MPLS Basics MPLS Basics

    MPLS BasicsMPLS Basics

Global site tag (gtag.js) - Google Analytics