Rails tutorialについて 6-10

随時更新、備忘録

6章

ユーザーモデルの作成

バリデーションについて

正規表現

一意性

セキュアなパスワード

  • ハッシュ関数を利用した安全なパスワードのためにBCryptを導入
  • update_attributeupdate_attributesは異なる

7章

デバッグ

  • レイアウトに<%= debug(params) if Rails.env.development? %>を差し込むことで開発環境でデバッグ情報を表示
  • paramsとは
  • コントローラーにdebuggerを差し込むことでbyebugプロンプトを表示
  • Gravatar画像を表示
  def gravatar_for(user)
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
  end

入力フォームの作成

  • form_for
  • ユーザー送信データをUser.newに直接渡すのは危険なため、コントローラー内のprivateメソッドとしてuser_paramsメソッドを実装し、そこにparams.require(:user)として渡す
  • Railsの慣習として、複数のビューで使われるパーシャルはsharedディレクトリに置かれる
  • 状況に応じて英単語を複数形にするpluralizeメソッド

入力フォームのテスト

ユーザー登録実装

  • リダイレクト後に実行されるflash変数
  • flashのためにBootstrap CSSに4つのクラスがある(success、info、warning、danger)
  • content_tagについて。あとこちら
  • content_tag
  • config/environments/production.rbのconfig.force_ssl = trueをコメント解除して、SSLを強制

8章

ログインページ作成

9章

トークン利用

  • 今更ながらattr_accessorについて。こちらも。
  • cookiesメソッドでクライアント側に保存。.permanentで有効期間を20年にできる(permanetといっても永遠ではない)。
  • リスト9.10でログアウトできないのは、ブラウザに残っているクッキーにより@current_userへ情報が流れてしまうため。ログアウトのためにはremember_digestとクッキーを削除する必要がある。
  • 三項演算子

10章

編集ページ作成