ログイン・ログアウト後のリダイレクト先を指定する[devise]

[前提]

  • deviseを使用しユーザー機能を実装している
  • Admin / Memberモデルを使用している
  • 今回はそれぞれのログイン・ログアウト後のリダイレクト先を指定する
  • またそれぞれのモデルのurlやコントローラをわかりやすい形にするため階層構造にしている [get "admins/secction/new" => "admins/admins#new"]

    [注意]

    今まで一つのモデルを用いていたが、複数モデルを扱う際リダイレクト先を指定したくなった。

[今までの方法]

private
def after_sign_in_path_for(resoure)
    root_path
end

[考え方] in_application.controllerに記載する。処理の条件を記載する。

private
def after_sign_in_path_for(resource_or_scope)
    if resource_or_scope.is_a?(Admin)
        admins_orders_top_path
    else
        root_path
    end
end

def
after_sign_out_path_for(resource_or_scope)
    if resource_or_scope == :member
        root_path
    elsif resource_or_scope == :admin
        new_admin_session_path
    else
        root_path
    end
end