Railsチュートリアル 第12章

12.1 PasswordResets リソース

12.1.1

演習1

省略.

演習2

メールにはフルのURLを記載しなくてはなりませんからね.

12.1.2

演習1

APIRailsガイド等を見てみましたが, よくわかりませんでした. 今回の場合は,

という理由しか思い浮かびませんでした.

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 本番環境でのメール送信

この節はやっていません.