2013-02-12 17 views
6

私はdeviseの統合を適用したいUserとActiveAdminという2つのモデルを持っています。2つの異なるモデルの場合のカスタム故障の定義方法ユーザーとアクティブな管理者?

偉大な動作しているようだ

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 

を次のように私は私のcustom_failure.rbを持っています。

また、同じように私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 

しかし、問題は、私はそれに応じてリダイレクトすることができるようにuser loginのためにログインするcustom_failure.rbでこのresourceを使用する方法ですか、 admin loginの場合は??それは常にユーザーのログインページにリダイレクトされる現在のシナリオへのアクセス?

答えて

11

custom_failure.rbをlibフォルダに入れてみてください。次に、ファイルがロードされていることを確認します。おそらく、自動的にlibのすべてのファイルを読み込もうとします。

次にRedirect to a specific page

UPDATE:

あなたがこの問題を解決するためにスコープを使用する必要があります: -

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 
+0

私はすでにそれを行っています。私の懸念は、このカスタム障害を特定する方法が 'user'または' ActiveAdmin'のためでした –

+0

@SahilGrover私の更新を確認してください。 –

関連する問題