deviseとactiveadminでログイン後の遷移先で詰まった
環境
activeadminは、deviseを使ってるので遷移先を定義してるメソッドも同じのを見てる。
deviseまたはactiveadminでログイン後の遷移先を任意の場所をするには、以下のように
applicationコントローラーにafter_sign_in_path_forメソッドを定義すればよい。
class ApplicationController < ActionController::Base def after_sign_in_path_for mypage_path end end
でもこれだと、一般ユーザがログインする時はマイページに遷移はするけど、activeadminからはdashboardに遷移しない。全部マイページに行く。
ちなみに、deviseの記事を見ているとどの記事もafter_sign_in_path_forメソッドにパスをべたっと貼って終わっている。
activeadminを使うことを想定していない感じだ。
deviseのソースを見るとそれっぽいコードがあったので修正し、以下のようにすると要望通りの動きになった。
#devise-2.1.2/lib devise/controllers/helpers.rb def after_sign_in_path_for(resource) stored_location_for(resource) || if resource.is_a?(User) mypage_path else super end end
stored_location_forメソッドってなんなんだろう。。
http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers:stored_location_for