Rails 中的 Active Record 和 ORM 有什么区别?

Joh*_*ohn 8 ruby orm activerecord ruby-on-rails

Actice Record 和 ORM 之间有什么区别吗?一些文件说两者是一样的。真的吗?

小智 9

对象关系映射(ORM)是一种使用面向对象的编程语言访问关系数据库的技术。对象关系映射是一种通过将数据库表“映射”到类并将类的实例“映射”到这些表中的行来管理数据库数据的方法。

Active Record只是这样的 ORM 之一,其他包括:

  • 续集
  • 数据映射器
  • 尖叫声
  • Ruby 对象映射器等

在这里阅读更多https://github.com/learn-co-students/active-record-mechanics-crud-v-000#orm-vs-active-record


Vis*_*hal 2

对象关系映射(ORM):

简化应用程序中数据库的使用。

使用对象来保存数据库记录

  1. 数据库中的每个表一个类
  2. 该类的对象对应于表中的行
  3. 对象的属性对应于行中的列

    • 管理对象和后端数据库之间的信息移动。
    • 管理表之间的关系(连接),转变为链接的数据结构。

ActiveRecord 基础知识

Model:对应数据库表ActiveRecord的Rails类:

  • Rails 中模型的基类
  • 实现对象关系映射

示例表

<table>
  <tbody>
    <tr>
      <th> id </th>
      <th>name</th>
      <th>birth</th>
      <th>gpa</th>
      <th>grade</th>
    </tr>
  </tbody>
  <tbody>
    <tr>
      <td> 1 </td>
      <td> Anderson </td>
      <td> 1987-10-22 </td>
      <td>  3.9 </td>
      <td>  2009  </td>
    </tr>
     <tr>
      <td> 2 </td>
      <td> Jones </td>
      <td> 1990-04-16</td>
      <td> 2.4 </td>
      <td>  2012   </td>
    </tr>
 </tbody>
  
  </table>
Run Code Online (Sandbox Code Playgroud)

为此表创建一个类(app/models/student.rb):

class Student < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

或者,只需使用脚本/生成程序:

ruby script/generate model student
Run Code Online (Sandbox Code Playgroud)
  • ActiveRecord 检查此表的数据库架构,并自动在类中提供适当的属性和方法