IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

devise_scope メソッドを使ってみる

はじめに

ここでは、以下の記事を参考にして devise_scope メソッドを使って、devise のデフォルトのルーティングを上書きしてみることにする。

 

使ってみる

ざっくりとアプリを作成する。

  • rails new devise_sample
  • cd devise_sample

 

gem をインストールする。

  • echo "gem 'devise'" >> Gemfile
  • bundle

 

devise の初期設定をする。

 

devise_scope の使い方は、以下のようにする。引数には、単数名詞を使うため、:users ではなく、:user を使う点に注意。

f:id:matt-note:20190224221025p:plain

 

というわけで、以下のようにルーティングを定義してみる。

f:id:matt-note:20190224221403p:plain

 

サーバーを起動して、アクセスしてみる。

f:id:matt-note:20190224221507p:plain

 

ただし、これだとルーティングに別名をつけただけで、/users/sign_in でもデフォルトのパスにアクセスできる。

f:id:matt-note:20190224222751p:plain

 

この点を修正するため、ルーティングを変更する。

devise_for メソッドの skip オプションを指定する。

f:id:matt-note:20190224224317p:plain

f:id:matt-note:20190224223523p:plain

f:id:matt-note:20190224223552p:plain

-> デフォルトのルーティングを上書きすることができた。

 

devise のデフォルトのルーティングを上書きする場合は、以下のようになる。

f:id:matt-note:20190224224245p:plain