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

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

自作Webアプリ「IT勉強会用 名刺ジェネレーター」を公開しました!ぜひご活用ください😀

https://it-benkyoukai-meishi.herokuapp.com/

devise のコントローラをカスタマイズしてみる

はじめに

ここでは以下の記事を参考にして、Rails5 で devise のコントローラをカスタマイズしてみることにする。

 

使ってみる

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

  • rails new devise_controller_sample
  • cd devise_controller_sample

 

devise をインストールする。

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

 

devise の初期設定をする。

 

Home コントローラを作成する

以下のコマンドで Home コントローラを作成する。

  • bin/rails g controller home index

 

ルーティングを設定する。

config/routes.rb で root を Home コントローラの index アクションに設定する。

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

 

ビューを作成する。

app/views/layouts/application.html.erb で登録用のリンクと、ログアウト用のリンクを出力する。

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

 

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

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

-> ホーム画面を作成できた。

 

devise のコントローラをカスタマイズする

devise のコントローラをカスタマイズするには、以下のコマンドを実行する。

  • bin/rails g devise:controllers users

 

これで app/controllers ディレクトリに users ディレクトリが作成されて、users ディレクトリ内に各種ファイルが作成される。

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

 

ここではユーザーが登録したら、ターミナルに "User has signed up!!" という文字列を出力してみることにする。

app/controllers/users/registrations_controller.rb で create アクションを上書きする。

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

 

ルーティングでデフォルトの動作を変更する。

Users::RegistrationsController を参照するように変更する。

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

 

サーバーを起動して、ユーザーを登録してみる。

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

ターミナルでログを確認してみる。

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

-> devise のコントローラをカスタマイズして、デフォルトの動作を変更することができた。

 

同じ要領で、ログアウトした時の動作を変更してみる。

app/controllers/users/sessions_controller.rb で、destory アクションを上書きする。

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

 

ルーティングを上書きして、Users::SessionsController を参照するように変更する。

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

 

サーバーを起動して、ログアウトしてみる。

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

-> ログアウトについても、devise のデフォルトの動作を変更できた。

 

まとめ

deivse のコントローラをカスタマイズするには、以下の設定を行う。

  • bin/rails g devise:controllers users を実行する。
  • ルーティングでデフォルトの動作を上書きする。
  • controllers/users ディレクトリ内のファイルで、アクションを上書きする。