ruby-on-rails - rails - 根模型或应用程序模型

标签 ruby-on-rails model

我只是环顾 rails 并注意到有一个应用程序 Controller 但没有应用程序模型。

rails 中没有根模型吗?如果不是,你把一段需要在每个模型中的代码放在哪里。

谢谢,亚历克斯

最佳答案

没有说你的 Controller 必须子类化 ApplicationController但它通常是标准,因为绝大多数 Rails 应用程序都使用 layout功能(每个 Controller 可能会有所不同),因此与其强制没有布局的罕见功能关闭每个 Controller 的布局( layout nillayout false ),不如制作一个“抽象”的,您可以将 Controller 功能轻松开启和关闭您的整个应用程序。

现在对于模型,您可以创建一个 ApplicationModel对于您所有的模型进行子类化,但有两件事需要考虑:

  • ActiveRecord 通常会检测何时您子类化已经子类化的 ActiveRecord::Base并使用它来打开 STI(单表继承)。
  • ApplicationModel将是一个实际模型,预计在您的数据库中有一个表。这可能会导致问题。

  • 要解决这两个问题,您必须设置 abstract_class为 true 以便 ActiveRecord 正常运行。
    class ApplicationModel < ActiveRecord::Base
      self.abstract_class = true
    end
    

    与抽象的 ActionController 相比,abstract_class必须设置为 true,这意味着开发人员必须知道他们不能从 ApplicationModel 中删除此行.与 ApplicationController你几乎可以为所欲为。

    关于ruby-on-rails - rails - 根模型或应用程序模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3329639/

    相关文章:

    ruby-on-rails - 如何让 nginx 等待我的上游服务在 Docker Swarm 中启动?

    ruby-on-rails - 我可以使用 MoSTLy CSS 更改脚手架页面的外观/感觉吗?

    jquery - 使用 Rails 3 学习 Ajax 的资源

    用于构建动态填充模型的 mySQL 查询

    ruby-on-rails - 如何使用 ruby​​ 调试器获取堆栈跟踪?

    ruby-on-rails - Ruby 中的超时模块 - 获取计时器值

    wpf - 数据读取器不兼容...成员在数据读取器中没有对应的列

    php - laravel 我需要每个表的模型和 Controller 吗?

    node.js - sequelize 未在 index.js 中为 sequelize 模型定义

    node.js - 无法使用 sequelize 更新表