【Rails】deviseまとめ
こんにちは😊Kintarouです。
現在エンジニア転職を目指してTECH CAMPにてプログラミング学習中です👨🎓
夢はフリーランスエンジニアになって働く人が働きやすいシステムを作ること!
と、愛する妻と海外移住すること🗽
プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry
今回はRailsのユーザー機能に使われるGem。『devise』についてまとめてみます!
- deviseとは
- 導入方法
- deviseのビューを作成
- deviseのストロングパラメーターを使えるようにする
- deviseを一度消して再導入したい時
- deviseを導入することで使えるヘルパーメソッド
deviseとは
RubyのGemの一つで、導入する事でユーザー機能を簡単に実装できます。
導入方法
導入するアプリケーションのGemfileに記述します。
#最下部 gem 'devise'
ターミナルにて、導入したアプリケーションのディレクトリに移動し以下を1行ずつ実行
% rails g devise: install % rails g devise user
db/migrate ファイル内にマイグレーションファイルが作成されました。
初期はemailとpasswordのカラムのみなので、ユーザー名(name)やニックネーム(nickname)など新たに設定したい場合はここで記入。
完了後マイグレーションを行う。
% rails db:migrate
これで導入完了です。
ローカルサーバーを起動した状態でhttp://localhost:3000/users/sign_inやsign_upにアクセスするとログインページに飛ぶことがわかります。
undefined method `devise' for 〜のエラーが出た場合
稀に起こるエラーです。deviseは自動で定義されているものなので、一度サーバーを再起動してもう一度更新してみましょう。
deviseのビューを作成
deviseにはあらかじめビューファイルが用意されていますが、ユーザー名(name)は自作したカラムなので登録フォームも自作する必要があります。
自作するために、deviseのビューファイルをディレクトリにおろしてきましょう。
% rails g devise:views
上記のコマンドで、app/viewsファイル内にdeviseファイルが作成され、その中に
- registrations(サインアップ画面)
- sessions(ログイン画面)
が作成されました。
これを編集することで、レイアウトを変更できます。
deviseのストロングパラメーターを使えるようにする
deviseのストロングパラメーターの記述はGem内にあるため、通常の方法ではストロングパラメーターを設定できません。
もし設定する場合は、app/controllers/application_controller.rbのファイルに
"configure_permitted_parameters"というメソッドを定義します。
class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? #deviseに関する処理の場合にメソッドを実行 private def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) #サインアップ時にnameカラムも取得する end end
deviseを一度消して再導入したい時
deviseを一度設定したが、不明な不具合などにより一度消して再導入したい時についてをまとめます。
まずはupになっているマイグレーションファイルがある場合、downにしておきましょう。
一度消す場合は導入手順をrails dコマンドで遡っていけばOKです。
% rails g devise:install % rails g devise user % rails g devise:views % rails db:migrate #の順で導入したので遡って % rails db:rollback % rails d devise:views % rails d devise user % rails d devise:install
これでdeviseを削除することで、またrails g devise:installから再導入できます。
deviseを導入することで使えるヘルパーメソッド
こちらは以下の記事を参考にさせていただいてます🙇♂️
メソッド | 用途 |
---|---|
before_action :authenticate_user! | コントローラーに設定して、ログイン済ユーザーのみにアクセスを許可する |
user_signed_in? | ユーザーがサインイン済かどうかを判定する |
current_user | サインインしているユーザーを取得する |
user_session | ユーザーのセッション情報にアクセスする |
以上。どなたかの参考になれば幸いです。