【问题标题】:What is the Difference between Active record and ORM in rails?Rails 中的 Active Record 和 ORM 有什么区别?
【发布时间】:2016-11-28 11:44:49
【问题描述】:

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

【问题讨论】:

  • activerecord 是 ORM 的一个例子

标签: ruby-on-rails ruby activerecord orm


【解决方案1】:

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

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

  • 续集
  • 数据映射器
  • 斯奎尔
  • Ruby 对象映射器等

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

【讨论】:

    【解决方案2】:

    对象关系映射 (ORM):

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

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

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

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

    ActiveRecord 基础知识

    Model:对应数据库表的 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>

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

    class Student < ActiveRecord::Base
    end
    

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

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

    【讨论】:

      【解决方案3】:

      我认为这是一个非常简单的问题,所以我会坚持一个简单的回答:

      • ActiveRecord 是 ruby​​ 语言的 ORM
      • 并非所有 ORM 都在 ruby​​ 中,例如 Django ORM 在 python 中
      • 除了 ActiveRecord 之外还有其他 ruby​​ ORM:https://www.ruby-toolbox.com/categories/orm

      => ActiveRecord ⊂ ruby​​ ORMs ⊂ ORMs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-30
        • 2011-10-02
        • 2018-06-25
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-23
        相关资源
        最近更新 更多