Ruby on rails ActiveRecord::Base背后的理论/基本原理

Ruby on rails ActiveRecord::Base背后的理论/基本原理,ruby-on-rails,theory,rails-activerecord,framework-design,Ruby On Rails,Theory,Rails Activerecord,Framework Design,这里是Rails初学者 你能帮我了解一下我所看到的大多数代码示例中最重要的部分背后的理论吗?”ActiveRecord::Base”、“应用程序控制器”和“ActionController::Base”部分 这三个叫什么?它们都是物体吗?上课 我理解“classx

这里是Rails初学者

你能帮我了解一下我所看到的大多数代码示例中最重要的部分背后的理论吗?”ActiveRecord::Base”、“应用程序控制器”和“ActionController::Base”部分

  • 这三个叫什么?它们都是物体吗?上课

  • 我理解“classx

  • ActiveRecord::Base
    ApplicationController
    ActionController::Base
    都是类。您需要创建其中一个实例来获取对象,但您永远不会这样做。相反,您将扩展它们以创建新的子类,然后创建这些子类的实例


    我相信视图有一个基类,但在正常使用情况下,您永远不会看到它。通常,您将创建视图模板,而不是视图类,因此您不会在框架的该部分处理Ruby类。

    ActiveRecord::Base、ActionController::Base是基于MVC的类。但是,您可以在不扩展这些类的情况下创建模型或控制器,这样它们就不会具有这些类提供的功能


    但是,在视图中,通常没有人在视图中创建对象或模型。这可以确保提高代码的可读性和可维护性。它将显示更多干净的代码。此外,在像index.rb这样的特定视图中,它实际上与控制器相连,您可以获取在控制器中初始化的对象实例,并使用它在视图中显示您的数据。

    添加到已经说过的内容,因为它是准确的

    我理解“classx 这是一条正确的道路,但有一些语义上的差异

    class User
    只创建ActiveRecord::Base的一个子类。在执行类似于
    User.create()
    的操作之前,您是否会获得该类的实例,该类有时可能被称为对象

    子类是具有父类的类的特殊词。在ruby中,您可能还记得类是对象类的所有子类,这很令人困惑

    此外,不应将ActiveRecord::Base子类化视为在模型中创建对象。相反,将子类视为模型的描述(通常是您希望存储的一些数据)。strong>每个子类本身就是一个模型。
    都是语义,但它可能有助于您的理解

    控制器也是如此。您不是在控制器中创建对象,而是创建控制器的全新描述。这种描述在实例化之前并不真正具体,rails在您或用户从应用程序请求页面时会自动进行实例化


    最后,确实有一个名为ActionView::Base的类来完善这三个类。Rails通过在控制器中调用
    render
    自动创建它。

    语义无疑有助于强化我一直试图学习的概念。在你向你祖母解释之前你什么都不知道。。。因此:'class UserUser.find(id)
    User.where(条件:'value')
    )验证(
    验证:cheese的存在)等都来自于该继承。