LoginSignup
40
66

More than 3 years have passed since last update.

devise デフォルトルーティングのカスタマイズ

Last updated at Posted at 2019-05-08

deviseでcontrollerをカスタマイズしていくときにルーティングもカスタマイズしていく事が多いと思います。
個人的に管理画面を作成していてルーティングを変更する事が多かったので備忘録として残していきます。

sign_inとsign_outのルーティングを変更する

変更前

  new_user_session     GET    /users/sign_in(.:format)            devise/sessions#new                                           
             user_session POST   /users/sign_in(.:format)            devise/sessions#create                                                     
     destroy_user_session DELETE /users/sign_out(.:format)           devise/sessions#destroy                                                   

変更後

routes.rb
  devise_scope :user do
    get 'login', to: 'devise/sessions#new'
    post 'login', to: 'devise/sessions#create'
    delete 'signout', to: 'devise/sessions#destroy'
  end

こうすることで下記のルーティングになります。

login   GET    /login(.:format)               devise/sessions#new
        POST   /login(.:format)               devise/sessions#create
signout DELETE /signout(.:format)             devise/sessions#destroy

prefixを変更前の様にnew_user_sessionの様にしたい場合はasを使い指定する必要があります。

  devise_scope :user do
    get 'login', to: 'devise/sessions#new', as: :new_user_session
    post 'login', to: 'devise/sessions#create', as: :user_session
    delete 'signout', to: 'devise/sessions#destroy', as: :destroy_user_session
  end

Controllerをカスタマイズしている場合

routes.rb
  devise_for :users,
    path: '',
    path_names: {
      sign_up: '',
      sign_in: 'login',
      sign_out: 'logout',
      registration: "signup",
    },
    controllers: {
      registrations: "users/registrations",
      sessions: "users/sessions"
    }

Image from Gyazo

admin画面などでのルーティングを組みたい場合

routes.rb
  devise_for :users,
    path: :admin,
    :controllers => {
      :registrations => 'organizers/registrations',
      :sessions => 'organizers/sessions',
      :passwords => 'organizers/passwords'
    }

pathを指定してあげるとusersを'admin'に置き換える事が出来ます。

Image from Gyazo

参考になった記事

sign_inとsign_outのデフォルトルーティングを変更する

ご覧いただきありがとうございました。

40
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
66