是否可以将任何控制器方法从类之外移至模块?

时间:2018-07-17 02:30:17

标签: ruby-on-rails module

我有一个像这样的文件:

app / controllers / application_controller.rb

class ApplicationController < ActionController::Base
   ... lots of code

   before_action :set_campaign

   ... lots of code
end

该类太大,因此我尝试将before_action :set_campaign行移到外面,像这样:

app / controllers / application_controller.rb

class ApplicationController < ActionController::Base
   ... lots of code

   include Foomodule

   ... lots of code
end

# app/lib/foomodule.rb
module Foomodule
  before_action :set_campaign
end

但这似乎不起作用。我得到:

undefined method `before_action' for Foomodule:Module

1 个答案:

答案 0 :(得分:0)

过滤器是仅适用于控制器动作的rails功能,请查找更多here

您可以看到here所介绍的方法,以查看是否可以在模块included回调周围钩住您之前/之后的过滤器

基本上是这样做的,

module Foomodule
  def self.included(base)
    base.before_action :set_campaign
  end
end