6

我有两个模型 User 和 ActiveAdmin 我想在其上应用我的devise集成。

我有我custom_failure.rb的如下

class CustomFailure < Devise::FailureApp

  def redirect_url
    login_path
  end

  # def redirect_url
  #   root_path
  # end

  def respond
    if http_auth?
      http_auth
    else
      redirect
    end
  end
end

这似乎工作得很好。

另外,可以在我的application controller喜欢中定义:

def after_sign_in_path_for(resource)
  # case resource
    if resource.is_a?(Admin)
      admin_dashboard_path
    else
      root_path
    end
end

def after_sign_out_path_for(resource_or_scope)
  login_path
end

但问题是如何使用它resourcecustom_failure.rb以便我可以相应地重定向到登录user login或登录admin login??根据当前情况,它总是重定向到用户登录页面??

4

1 回答 1

14

尝试放入custom_failure.rb您的 lib 文件夹。然后确保文件已加载。您可能会尝试自动加载 lib 中的所有文件。

然后重定向到特定页面

更新:

你必须使用范围来解决这个问题:-

class CustomFailure < Devise::FailureApp 
  def redirect_url 
    if warden_options[:scope] == :user 
      signin_path 
    else 
      new_admin_user_session_path 
    end 
  end 
  def respond 
    if http_auth? 
      http_auth 
    else 
      redirect 
    end 
  end 
end 
于 2013-02-12T10:04:34.623 回答