我的 Rails 应用程序中有很多控制器,我需要before_filter
在不同的控制器中使用之前的一些操作。before 过滤器将执行所有这些操作的相同代码。是否有一种干净的 DRY 方式(application_controller
例如)来指定应该运行它的操作列表before_filter
?我尝试before_filer
在所有控制器中使用(9),但这看起来很重复,因为它是相同的代码。
问问题
244 次
1 回答
1
为什么不ApplicationController
呢?如果您before_filter
在应用程序控制器中定义任何内容,那么它将在每个请求上执行。
现在你说它看起来重复,但实际上没有。提及before_filter
实际上application_controller.rb
代表 DRY AKA,您不必before_filter
在其他任何地方指定。
当然,并非所有 9 个控制器都会同时执行,因此这ApplicationController
是一种首选方式
class ApplicationController < ActionController::Base
...
before_filter :pre_execute_action
...
end
class MyController < ApplicationController
...
skip_before_filter :pre_execute_action, except: [:methods_for_which_it_should_execute]
...
end
试试上面的代码作为参考
于 2016-08-31T11:50:29.837 回答