rails和ruby中的关注点和application_controller.rb之间的区别

时间:2015-08-17 21:52:51

标签: ruby-on-rails ruby

我了解到关注文件夹基本上是我们的控制器和模型。另一方面,ApplicationController也有同样的目的。 我们将模型/控制器之间的公共代码放在关注文件夹和应用程序控制器文件中也是如此。

然后它们之间有什么区别?

2 个答案:

答案 0 :(得分:2)

对控制器的关注可能适用于两个或三个控制器,但您可能不希望它适用于所有控制器。这是conerns的一个很好的功能......你可以为需要它的控制器干掉代码,而无需将代码添加到不需要它的控制器。

应用程序控制器中的代码可在所有控制器中访问。

答案 1 :(得分:0)

Concerns基本上是混合到控制器或模型类中的模块。 Concern扩展ActiveSupport::Concern模块。它有助于减少模型/控制器类的范围,并且可以更轻松地跨多个模型/控制器类重用公共代码。担心就像帮助模块。我们可以在关注点中定义辅助方法,并且可以包含或扩展来自各种控制器/模型类的这些关注点,以共享和干掉模型/控制器代码。

另一方面,ApplicationControllercontroller class(不是module),在你的Rails应用程序中,它是你所有其他控制器的base class类派生自。 e.g。

class FooController < ApplicationController
   . . . 
end

class BarController < ApplicationController
   . . . 
end

在模型 - 视图 - 控制器(MVC)软件架构模式中,控制器实现业务逻辑,可以向模型发送命令以更新模型的状态。它还可以将命令发送到其关联的视图,以更改视图的模型表示。 ApplicationController是那种Concerns就像帮手完成工作一样。