我怎么before_filter Module :: Class ::方法?

mag*_*e f 3 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我在我的Rails项目上有一个自定义模块,我希望它是一个before_filter,我有办法吗?

before_filter TokenGenerator::Generator.generate_token("mytoken")
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 6

您可以使用块作为before_filter:

before_filter do |controller|
    TokenGenerator::Generator.generate_token("mytoken")
end
Run Code Online (Sandbox Code Playgroud)

或者你可以创建一个单独的类:

class TokenFilter
    def self.filter(controller)
        TokenGenerator::Generator.generate_token("mytoken")
    end
end

#...

before_filter TokenFilter
Run Code Online (Sandbox Code Playgroud)

或通常的方法:

before_filter :token_generator

#...

private

def token_generator
    TokenGenerator::Generator.generate_token("mytoken")
end
Run Code Online (Sandbox Code Playgroud)

  • @Adam:对我来说这是一个清洁问题,`token_generator`方法不是控制器类外部接口的一部分,所以它也不应该是类的Ruby接口的一部分. (2认同)