允许多个模型访问控制器

时间:2015-08-02 05:58:08

标签: ruby-on-rails ruby devise

我有一个我打电话的控制器

before_action :authenticate_user!

在开头。但是,我还有一个应该访问该控制器的模型admin,即

before_action :authenticate_admin!

我怎样才能让它可以访问控制器?

1 个答案:

答案 0 :(得分:4)

Devise分别为user_signed_in?模型和admin_signed_in?模型提供辅助方法UserAdmin

您可以在ApplicationController中编写自定义过滤器,并根据需要在具体控制器中应用过滤器。

class ApplicationController < ActionController::Base
  ...

  class AuthorizationException < StandardError
  end

  rescue_from AuthorizationException do
    render text: "Access Denied", status: :unauthorized
  end

  protected
  def authenticate_user_or_admin!
    unless user_signed_in? or admin_signed_in?
      raise AuthorizationException.new
    end
  end
end

您现在可以在控制器中使用过滤器authenticate_user_or_admin!