学習[59]日目
本日の学習内容
deviseを利用したログイン機能の実装
以前の実装においてdeviseによってログイン画面まで実装を行いましたが、今回は具体的な機能を実装していく必要があります。
strong_parameterへのデフォルト以外の値の追加
まず、deviseのデフォルトで設定されているカラム以外のデータを保存する為に、設定を追加する必要があります。
上記の要因となっているのは、もともとdeviseにはe-mailやパスワードといった項目がstrong_parameterによって既に許可設定されています。
新たに”name”や”age”などの項目を追加したい場合にはそれを許可するためのstrong_parameterを記述する必要があります。
上記のように記述することで設定を行うことができますが、一例です。
まず、使用するメソッドは、「devise_parameter_sanitizer 」です。
記述する場所は、Deviseのコントローラーを継承したコントローラーか、もしくはApplication Controllre に記述する。
今回の場合は、devise_parameter_sanitizerを直接呼び出さず、呼び出すメソッドを作成して、deviseのコントローラーにあるアクションが動いた時のみに動くようにif: :devise_controller?をbefore_actionにオプションで設定する。
※:sign_up部分は引数で引数により異なる種類の処理を行うように設定出来る。
ユーザーの編集機能の実装
ここまででユーザーの新規登録が可能となりましたが、編集が出来ないので編集をできるようにしていきます。
まず、ユーザーの編集を行う為にcontrollerを新規に作成してきます。
rails g controller Users
そして、コントローラーのアクションを設定します。今回はeditアクションとupdateアクションがあれば良いので各アクションを定義します。
コントローラーの作成を行ったので作成したコントローラーのeditアクションをリンク先に設定します。
今回はeditアクションとupdateアクションを定義しているのでそれぞれのルーティングを設定していきますが、updateに関しては変更を保存できたか出来ていないかの処理の設定して表示はトップページに戻れば良いのでビューは設定しません。rootにに飛ぶように設定すれば良いです。
しかし、editnに関しては編集を行う画面が必要となるので、ビューの作成を行う必要があります。
フラッシュメッセージの実装
フラッシュメッセージとは、ユーザーの動作に合わせてメッセージを出す機能です。
今回はupdateでトップページに戻るように設定しましたが、設定後に変更されたかが、パッと見でわからないので、変更した時にメッセージを出すことでわかりやすくするために実装していきます。
これをサインアップ時、ログイン時、ログアウト時に出るようにします。
また、デフォルトでは、フラッシュメッセージは英語なので、日本語化してフラッシュメッセージを出すように日本語のファイルを利用して実装していく必要があります。
これらをトップページ状に反映させたいのでrenderとimportを使用して反映させます。
上記でビューの方は完成したので、表示されるメッセージを英語から日本語に切り替える手順を行なっていきます。
#config/locales以下に、「devise.ja.yml」および「ja.yml」という名前のファイルを新規作成する。
「devise.ja.yml」、「ja.yml」に関しては調べて出てくるのでコピーして実装すれば大丈夫です。これでフラッシュメッセージが完成しました。
今日の英単語
これからは、わからない英単語に関しても徐々に覚える為に追加していきます。
●unsubscride 登録の解除(subscride 申し込むを覚えれば理解しやすい)
●notification 通知
記述を忘れたので最後にmodelにてvalidateというものがありますが、こちらに関しては文字数制限等の設定を行うことができる処理になります。
また、今回は実装していませんが、パスワードの変更もか可能にして変更する際に変更前のパスワードを必要とするような設定も行いたいなと思いました。
本日の学習内容は以上になります。
最後までお読みいただきありがとうございます。
参照:https://www.pikawaka.com/rails/devise