勉強履歴(と雑記)

プログラミング初心者のメモ書きです

Railsチュートリアル 第11章 メモ書き

○アカウントの有効化

 新規登録したユーザーが本当にそのメールアドレスの持ち主なのかを確認するための有効化。

 1)ユーザーの初期状態はunactivated

 2)登録時に有効化トークンとそれに対応する有効化ダイジェストを生成

 3)有効化ダイジェストはデータベースに保存

 4)有効化トークンとメールアドレスを含めたリンクをユーザーにメールに送信

 5)ユーザーがリンクをクリックしたら、アドレスをキーとしてデータベース内の有

   効化ダイジェストと比較、トークンを認証

 6)ユーザーのステータスをactivatedに

 

・AccountActivationsリソース:

ActiveRecordのモデルではなく、セッション機能を使ってUserモデルに追加する。

注意として、有効化はRESTルールに従うと、PATChリクエストとupdateアクションに

なるはずだが、有効化リンクをメールで送る関係上、ブラウザからのリクエストはGETであり、editアクションに変更する必要がある。

 

リクエスト     URL        Action        名前付きルート

GET  /account_activation/トークン/edit edit edit_account_activation_url(token)

 

・データベースにはactivated属性(boolean)とactivated_at属性(datetime)を追加する。

 

・有効化トークンやダイジェストはユーザーオブジェクトが作成される前に作成する必要がある

→before_createコールバックを定義する。

 before_create :create_activation_digest

 

・privateキーワード:これより下のメソッドは自動的に非公開に

 

・Action Mailer:

メール送信に必要なライブラリ。メイラーの構成はコントローラのアクションに近似し、メールのテンプレートをビューと同じ要領で定義できる。

 

rails generate mailer UserMailer account_activation password_reset

でUserメイラー、account_activateionメソッド、password_resetメソッドが生成される

 

・メイラーのビューはテキストとHTMLの2つが生成される。

 

・クエリパラメータ:URLの末尾で?に続けてキーと値のペアを記述したもの

エスケープ:通常URLでは使えない文字(@など)を扱えるように変換する手法。

account_activations/q5lt38hQDc_959PVoo6b7A/edit?email=foo%40example.com

+生成したトークンで一意のURLを作成できる。

 

Railsにはメールを送信しなくともメールのプレビューを確認する機能がある。

 

メタプログラミング:プログラムでプログラムを作成すること。

          式展開を利用してメソッドを引数として別メソッドに渡すこと。

 

・if user && !user.activated? && user.authenticated?(:activation, params[:id])

→ !user.activated?はユーザーを再度有効化しないために必要

 

・Herokuで本番環境からメールを送信する場合、

SendGridというアドオンを利用して、アカウントを検証する。

config/environments/production.rbの設定変更後、

heroku addons:create sendgrid:starterを実行