📜  Ruby on Rails活动记录

📅  最后修改于: 2021-01-12 02:39:34             🧑  作者: Mango

活动记录

数据结构由类的层次结构表示。数据大部分存储在关系数据库表中。程序的对象视图和数据库的关系数据视图之间存在本质上的不匹配。为了消除这种不匹配,已经尝试了许多尝试。解决此不匹配问题的一种方法是使用对象关系映射(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 Records时,您不必设置任何数据库连接。它管理应用程序的所有数据库连接。它为数据库中的每个列将属性添加到您的类。

  • Active Record命名约定
  • Active Record使用CoC(约定之上的配置)原理。按照以下命名约定,无需任何配置即可利用Active Record的许多动态功能。

类和数据库

数据库表应以复数形式命名,并以模型类的小写字母命名。例如,如果模型类名称为Student ,则对应的表名称将为students 。借助该约定,Rails将自动为模型类找到对应的表,而无需任何配置代码。它甚至支持复数名词,例如“ people”作为“ person”的复数。

Rails提供了一种功能,您可以在其中添加模型的复数形式。要定义自己的复数形式,请使用Inflector将代码添加到config / environment.rb中。

在某些情况下,如果您不想以复数形式命名数据库,可以通过在config / environment.rb中添加以下行来为Rails配置单数形式的数据库表:

ActiveRecord::Base.pluralize_table_names = false