Jo *_*ang 3 ruby ruby-on-rails actioncontroller ruby-on-rails-3
我有许多控制器会有一些类似的行为,例如用户应该登录,需要设置一些范围,需要设置current_account/current_user并缓存权限.
我想到使用标准控制器并对其进行子类化.
class MyStandardController < ApplicationController
before_filter :xyz
end
class SomeController < MyStandardController
end
Run Code Online (Sandbox Code Playgroud)
我想知道的是我需要/什么时候打电话super ?
谢谢
您不需要super在从另一个控制器继承的控制器内部调用; 事实上,这样做可能有点奇怪.Super从超类中执行同名的方法,你可能没有任何方法MyStandardController可以重新定义它的子类.
这样做的主要原因是,正如您所说的那样,要在控制器之间轻松命名过滤器和方法.我们在我们的应用程序中执行类似的操作,其中具有非常相似行为的站点的一个区域将从控制器(如ShoppingController)继承,该控制器具有仅在其所有子项上可用的一部分私有方便方法.
但是,实际上,拥有实现所需功能的模块可能会更好,并将它们包含在您想要的控制器中.最终你可能想要一个控制器在另一个控制器上的东西,并且使用模块比使用复杂的继承层次结构更容易.
| 归档时间: |
|
| 查看次数: |
2793 次 |
| 最近记录: |