Railsチュートリアル:11章(わからないとこメモです)
第11章アカウントの有効化
有効化用のリンクにアクセスして有効化のステータスを変更する部分では、RESTのルールに従うとPATCHリクエストとupdateアクションになるべきです (表 7.1)。しかし、有効化リンクはメールでユーザーに送られることを思い出してください。ユーザーがこのリンクをクリックすれば、それはブラウザで普通にクリックしたときと同じであり、その場合ブラウザから発行されるのは (updateアクションで使うPATCHリクエストではなく) GETリクエストになってしまいます。このため、ユーザーからのGETリクエストを受けるために、(本来であればupdateのところを) editアクションに変更して使っていきます。
なるほど
11.1 AccountActivationsリソース
11.1.2 AccountActivationのデータモデル
オブジェクトが作成されたときだけコールバックを呼び出したいのです。それ以外のときには呼び出したくないのです。そこでbefore_createコールバックが必要になります。
↑before_saveとはきちんと違いを整理する。「作成されたときだけ」なのでcreate
before_create :create_activation_digest
上のコードはメソッド参照と呼ばれる
create_activation_digestメソッド自体はUserモデル内でしか使わないので、外部に公開する必要はありません。7.3.2のときと同じようにprivateキーワードを指定して、このメソッドをRuby流に隠蔽
private
def create_activation_digest
# 有効化トークンとダイジェストを作成および代入する
end
11.2 アカウント有効化のメール送信
11.2.1 送信メールのテンプレート
mailer関係を作成
rails generate mailer UserMailer account_activation password_reset
生成したメイラーごとに、ビューのテンプレートが2つずつ生成されます。1つはテキストメール用のテンプレート、1つはHTMLメール用のテンプレートです。
↑テキスト用とHTMLメール用。さすが。
11.2.2 送信メールのプレビュー
11.2.3 送信メールのテスト
11.2.4 ユーザーのcreateアクションを更新
まあ完全に意味不明
11.3 アカウントを有効化する
11.3.1 authenticated?メソッドの抽象化
もうここまできていよいよ理解ができない。
トークンがダイジェストと一致したらtrueを返す
↑わからん単語とわからん単語が一致したらtrue、どういうこと?みたいな状況
テスト成功するところでも成功しない。
もうお決まりになってきたw
11.3.2 editアクションで有効化
11.3.3 有効化のテストとリファクタリング
やばいくらいわからん
11.4 本番環境でのメール送信
herokuのクレジットカードはやめといて二周目にしよう。。。
よって、最後のとこで下のようにでます。。。
ec2-user:~/environment/sample_app (master) $ heroku addons:create sendgrid:starter
Creating sendgrid:starter on ⬢ stark-reaches-53742... !
▸ Please verify your account to install this add-on plan (please enter a credit card) For more information, see
▸ https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify
気にせずいこう。
Author And Source
この問題について(Railsチュートリアル:11章(わからないとこメモです)), 我々は、より多くの情報をここで見つけました https://qiita.com/fumi1011/items/a655443904df747bf763著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .