before_filter运行多个方法

时间:2011-05-02 02:38:39

标签: ruby-on-rails ruby

是否有可能:

before_filter :authenticate_user! || :authenticate_admin!

3 个答案:

答案 0 :(得分:6)

before_filter :do_authentication

def do_authentication
  authenticate_user! || authenticate_admin!
end

答案 1 :(得分:5)

before_filter {authenticate_user! || authenticate_admin!}

将proc传递给before_filter方法,将与您在问题中提供的内容最接近。

答案 2 :(得分:-2)

由于:authenticate_user!是一个符号,:foo == true有效。因此,您的示例将始终等同于before_filter :authenticate_user!

尝试类似的东西(不确定你的设置......):

if method_defined?(:authenticate_user!)
  before_filter :authenticate_user!
else
  before_filter :authenticate_admin!
end

如果您定义了两个方法并希望运行authenticate_user!,那么如果返回false,则运行authenticate_admin!,只需创建一个authenticate!方法来检查使用/ admin并运行before_filter {1}}。