Rails使用MVC范例。它在模型,视图和控制器中很有意思,实际上只有控制器具有“应用程序”或父控制器。实际上在rails中有一个application_helper,但实际上并没有做太多。有一个app_controller有什么意义,因为模型和实际帮助者没有父级?
答案 0 :(得分:4)
模型有父,ActiveRecord :: Base ApplicationController就在那里,因为它太常见了,无法在Web应用程序中查看您需要的应用程序范围的过滤器以进行身份验证/授权等。应用程序帮助程序再次用于放置在整个应用程序中使用的辅助方法,超出了一个控制器的范围
答案 1 :(得分:3)
模型是有凝聚力的,应该是MVC框架中最独立的实体。在这种情况下,比较模型与控制器并不好。
助手是支持视图的东西。例如,您最终可能会在视图中编写一些实际的rails代码,这些代码可以在不同视图中重用。对于那些场景,帮助者将会拯救。
并且控制器必须在视图和底层模型之间进行理想的说话。拥有所有控制器的父级,应用程序控制器来执行此操作是合乎逻辑的。
Rails MVC框架中的所有类都有一个父级--ActiveRecord :: Base是模型的父级,ActionController :: Base是控制器的父级。由于帮助程序用于视图,因此它们至少没有显式父级。
答案 2 :(得分:1)
一般性地谈到MVC而不是具体关于rails:
如上所述,通用控制器对于所有控制器通用的通用处理是有益的,它在特定控制器之前执行。这同样适用于模型,因为可能存在一些模型可以从中受益的通用属性。这通常可以通过继承来实现,其中模型继承了“应用程序模型”。
这就是为什么你看到通用控制器,而不是模型。已经有一种在模型中获得通用行为的方法,但对于控制器来说并非如此。