Rails Tutorialやってみた!35(12章-1)

公開日:2019-05-01
最終更新:2019-05-01

100DaysOfCode 58/100

今日やること

  • 全体像の把握
  • 事前準備
  • Userモデルに属性追加
  • createアクションの作成

全体像の把握

  • 今回作るのは、パスワードを忘れてしまったときのパスワードリセット機能
  • 11章で用意したパスワード再設定用のメーラーを実装していく
  • 前回同様、再設定用のトークンダイジェストを比較することで認証を行う

事前準備

今回の内容はほぼ11章に近いやり方で進めていけそうです。
まずはコントローラを作成します。

今回はパスワードリセット用のnewビュー/アクションおよびcreateeditupdateアクションが必要です。

ログイン画面のビューも更新して、いわゆる「パスワードを忘れた場合はこちら」のリンクを作成します。

Userモデルに属性追加

こちらも11章と同じように、Userモデルにはreset_digest(とreset_sent_at)を保存して生のトークンは仮想的な属性として扱うようにします。

createアクションの作成

ここでcreateするのはトークンとダイジェストです。

def create  
  @user = User.find_by(email: params[:password_reset][:email].downcase)  
  if @user  
    @user.create_reset_digest  
    @user.send_password_reset_email  
    flash[:info] = "Email sent with password reset instructions"  
    redirect_to root_url  
  else  
    flash.now[:danger] = "Email address not found"  
    render 'new'  
  end  
end  
  • フォームに入力されたメールアドレスでユーザーを検索
  • パスワードリセットのダイジェストを作成
  • パスワードリセットメールを送信
  • メールアドレスが間違っている場合はflashで通知

という流れです。

実際のロジックはUserモデル内に書いていきましょう。

終わりに

これまでの集大成のごとく、ひとつのコントローラーで様々な操作(フォーム表示、トークン作成、メール送信、新規パスワード送信……)を行うため、ちょっと混乱してしまいますね。

落ち着いて整理しながら進めていきたいと思います。

次回以降やること

  • 12章のつづき(メイラーの作成etc)
  • 本を読んでインプット(継続中)
記事が少しでもいいなと思ったらクラップを送ってみよう!
13
+1
@tammcの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする