rails – 根模型或应用程序模型
我只是环顾铁路,发现有一个应用程序控制器,但没有应用程序模型。
在rails中没有根模型吗? 如果不是,你在哪里放一个需要在每个模型中的代码。
谢谢,Alex
没有什么说你的控制器必须是ApplicationController
子类,但它通常是标准的,因为绝大多数的rails应用程序都使用了layout
function(可以在每个控制器上有所不同),所以不要强迫没有布局的稀有应用程序关闭布局(每个控制器的layout nil
或layout false
),它们构成一个“抽象”控制器,您可以轻松地为整个应用程序打开和关闭控制器function。
现在对于模型,您可以为所有模型创建一个ApplicationModel
子类,但有两件事需要考虑:
- ActiveRecord通常会检测您已经子类化的
ActiveRecord::Base
子类,并使用它来打开STI(单表inheritance)。 -
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合作多年)?
- 路由关注和多态模型:如何共享控制器和视图?
- WebMock:Rspec – 使用JSON响应测试Facebookvalidation
- rails erb form helper options_for_select:selected
- Rails:如何覆盖:destroy方法?
- 在Ruby on Rails中,线程,并发和分叉进程的当前状态是什么?
- 使用paperclip和simple_form将文件上传到rails 4.0
- 如果结果包含正则表达式特殊字符,为什么我不能对扫描的每个结果执行gsub?
- 我们如何以干燥的方式使用带有angularjs的rails路由?
- 在生产中更新ElasticSearch映射(轮胎)