MVC范例。为什么只有application_controller?

时间:2011-07-28 19:15:39

标签: ruby-on-rails model-view-controller

Rails使用MVC范例。它在模型,视图和控制器中很有意思,实际上只有控制器具有“应用程序”或父控制器。实际上在rails中有一个application_helper,但实际上并没有做太多。有一个app_controller有什么意义,因为模型和实际帮助者没有父级?

3 个答案:

答案 0 :(得分:4)

模型有父,ActiveRecord :: Base ApplicationController就在那里,因为它太常见了,无法在Web应用程序中查看您需要的应​​用程序范围的过滤器以进行身份​​验证/授权等。应用程序帮助程序再次用于放置在整个应用程序中使用的辅助方法,超出了一个控制器的范围

答案 1 :(得分:3)

模型是有凝聚力的,应该是MVC框架中最独立的实体。在这种情况下,比较模型与控制器并不好。

助手是支持视图的东西。例如,您最终可能会在视图中编写一些实际的rails代码,这些代码可以在不同视图中重用。对于那些场景,帮助者将会拯救。

并且控制器必须在视图和底层模型之间进行理想的说话。拥有所有控制器的父级,应用程序控制器来执行此操作是合乎逻辑的。

Rails MVC框架中的所有类都有一个父级--ActiveRecord :: Base是模型的父级,ActionController :: Base是控制器的父级。由于帮助程序用于视图,因此它们至少没有显式父级。

答案 2 :(得分:1)

一般性地谈到MVC而不是具体关于rails:

如上所述,通用控制器对于所有控制器通用的通用处理是有益的,它在特定控制器之前执行。这同样适用于模型,因为可能存在一些模型可以从中受益的通用属性。这通常可以通过继承来实现,其中模型继承了“应用程序模型”。

这就是为什么你看到通用控制器,而不是模型。已经有一种在模型中获得通用行为的方法,但对于控制器来说并非如此。