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

Ale*_*lex 5 model ruby-on-rails

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

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

谢谢,亚历克斯

Sam*_*uel 14

没有什么说你的控制器必须是子类,ApplicationController但它通常是标准的,因为绝大多数的rails应用程序都使用了这些layout功能(每个控制器都有所不同),所以不要强迫没有布局的稀有应用程序关闭布局(layout nil或者layout false)对于每个控制器,它们都是一个"抽象"控制器,您可以轻松地为整个应用程序打开和关闭控制器功能.

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

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

要解决这两个问题,必须将abstract_classActiveRecord 设置为true才能正常运行.

class ApplicationModel < ActiveRecord::Base
  self.abstract_class = true
end
Run Code Online (Sandbox Code Playgroud)

与抽象ActionController相比,abstract_class 必须设置为true,这意味着开发人员必须知道他们无法从中删除此行ApplicationModel.随着ApplicationController你可以做任何你想做的事情.