Railsチュートリアル 第12章
12.1 PasswordResets リソース
12.1.1
演習1
省略.
演習2
メールにはフルのURLを記載しなくてはなりませんからね.
12.1.2
演習1
APIやRailsガイド等を見てみましたが, よくわかりませんでした. 今回の場合は,
- コントローラ内でインスタンス変数を用意していないから
という理由しか思い浮かびませんでした.
12.1.3
演習1
UserMailer.password_reser
に対し, 以下のエラーが表示されました.
wrong number of arguments (given 1, expected 0)
11章をやっていない場合はまた異なるエラーが出るんでしょうね.
演習2
たしかに演習1で入力したメールアドレスに対応するユーザーには, reset_sent_at
属性に値が存在しました.
12.2 パスワード再設定のメール送信
12.2.1
演習1, 2, 3
省略.
12.2.2
演習1
問題なくクリアしました.
演習2
省略.
12.3 パスワードを再設定する
12.3.1
hidden
タグを利用することによって, update
アクションからもメールアドレスがparams[:email]
という形で参照できるようになりました. edit
アクションとupdate
アクションにおけるメールアドレスの参照の仕方が統一されたため, before action
をつくることができます.
演習1
問題なく表示されました.
演習2
すでに空っぽのupdate
アクションを作っていたので,
No template found for PasswordResetsController#update
というエラーが発生しました.
12.3.2
演習1, 2
省略.
12.3.3
演習1
省略.
演習2
該当箇所は以下のように記述しました.
assert_nil user.reload.reset_digest
演習3
省略.
演習4
update
アクションを以下のように変更しました.
# app/controllers/password_resets_controller.rb def update if params[:user][:password].empty? @user.errors.add(:password, :blank) render 'edit' elsif @user.update_attributes(user_params) log_in(@user) @user.update_attribute(:reset_digest, nil) # 追加 flash[:success] = 'Password has been reset' redirect_to @user else render 'edit' end end
12.4 本番環境でのメール送信
この節はやっていません.