本文概述
数据结构由类的层次结构表示。数据大部分存储在关系数据库表中。程序的对象视图和数据库的关系数据视图之间存在本质上的不匹配。为了消除这种不匹配, 已经尝试了许多尝试。解决此不匹配问题的一种方法是使用对象关系映射(ORM)工具。 ORM是关系数据库表到面向对象类的映射。
完美的ORM将数据库关系数据的详细信息隐藏在对象层次结构的后面。在Rails中, ORM由Active Record实现, Active Record是Rails库中最重要的组件之一。
ORM在数据库如何处理其数据与面向对象的应用程序如何处理其数据之间提供了一个映射层。它将数据库表映射到类, 将数据库表行映射到对象, 将数据库表列映射到对象属性。 Active Record主要为你执行映射过程。使用Active Record时, 你不必再处理诸如表, 行或列之类的数据库构造。你的应用程序仅处理类, 属性和对象。
Active Record基于Martin Fowler创建的设计模式。仅从这种设计模式中, Active Record便获得了它的名字。即使行数更少, 其代码也能很好地工作。它很容易使用。如果数据库和类中遵循正确的命名方案, 则Active Record Rails应用程序根本不需要任何配置。
Active Record的另一个功能使你可以轻松地实现特定领域语言(DSL)的实现。 DSL是一种旨在在特定问题域中使用的编程语言。它允许你使用动态生成的方法, 例如检索记录, 使用find_by_first_name方法。
Active Record基础
Active Record的一些基础知识是类, 对象和命名约定。
Active Record类和对象
数据库中的每个表通常由扩展Active Record基类的类表示。通过扩展Active Record基类, 模型对象继承了许多功能。
使用Active Records时, 你无需设置任何数据库连接。它管理应用程序的所有数据库连接。它为数据库中的每个列添加属性到你的类。
Active Record命名约定
Active Record使用CoC(约定之上的配置)原理。按照以下命名约定, 无需任何配置即可利用Active Record的许多动态功能。
类和数据库
数据库表应以复数形式命名, 并以模型类的小写字母命名。例如, 如果模型类名称为Student, 则对应的表名称将为学生。借助该约定, Rails会自动找到模型类的对应表, 而无需任何配置代码。它甚至支持复数名词, 例如” people”作为” person”的复数。
Rails提供了一种工具, 你可以在其中为模型添加复数形式。要定义自己的复数形式, 请使用Inflector将代码添加到config / environment.rb中。
在某些情况下, 如果你不想以复数形式命名数据库, 可以通过在config / environment.rb中添加以下行来为Rails配置单数形式的数据库表:
ActiveRecord::Base.pluralize_table_names = false
评论前必须登录!
注册