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

时间:2011-09-29 05:47:57

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我的Rails项目上有一个自定义模块,我希望它是一个before_filter,就在那里 我能做的一种方式吗?

before_filter TokenGenerator::Generator.generate_token("mytoken")

2 个答案:

答案 0 :(得分:6)

您可以使用block as a before_filter

before_filter do |controller|
    TokenGenerator::Generator.generate_token("mytoken")
end

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

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

#...

before_filter TokenFilter

或通常的方法:

before_filter :token_generator

#...

private

def token_generator
    TokenGenerator::Generator.generate_token("mytoken")
end

答案 1 :(得分:4)

您可以为generate_token创建一个委托方法,然后使用前一个过滤器的委托方法...

before_filter :generate_token

def generate_token
  TokenGenerator::Generator.generate_token("mytoken")
end