rails – 根模型或应用程序模型

我只是环顾铁路,发现有一个应用程序控制器,但没有应用程序模型。

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

谢谢,Alex

没有什么说你的控制器必须是ApplicationController子类,但它通常是标准的,因为绝大多数的rails应用程序都使用了layoutfunction(可以在每个控制器上有所不同),所以不要强迫没有布局的稀有应用程序关闭布局(每个控制器的layout nillayout false ),它们构成一个“抽象”控制器,您可以轻松地为整个应用程序打开和关闭控制器function。

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

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

要解决这两个问题,必须将abstract_class设置为true,以使ActiveRecord正常运行。

 class ApplicationModel < ActiveRecord::Base self.abstract_class = true end 

与抽象ActionController相比, abstract_class 必须设置为true,这意味着开发人员必须知道他们无法从ApplicationModel删除此行。 使用ApplicationController您可以随心所欲地执行任何操作。

rails中的大多数模型都inheritance自ActiveRecord :: Base,它具有所有传统的getter和setter以及关联方法,validation和支持。

您可以将ActiveRecord :: Base扩展到lib目录中的文件中(或者实际上是rails加载路径中的任何位置),并且任何活动记录模型的模型都可以使用这些方法。 模块也是在许多模型之间共享代码的好方法。

我想我记得几年前,默认情况下确实存在一个安卓AppModel。 这是真的还是我搞混了(直到现在我还没有和Rails合作多年)?