LoginSignup
0
0

More than 3 years have passed since last update.

Railsチュートリアルメモ - 第6章

Last updated at Posted at 2020-01-12

メモの目次記事はこちら

Railsチュートリアル第6章へのリンク

サマリ

  • ユーザーモデルの作成とユーザー登録機能の追加
  • パスワードのハッシュ化保存
  • パスワードの認証

ポイント

  • Active Recordを使うことで、RailsからDBの詳細を隠蔽し、切り離すことができる。
  • SQLについて学ばずにDBに対してCRUD操作を行える。

  • 以下コマンドでモデルを生成し、DBに反映できる

    • rails generate model User name:string email:string
    • rails db:migrate
  • rails generate migrationで指定するマイグレーション名の最後に_to_usersを付与しておくと、usersテーブルへのカラム追加だと判断してファイルを作成してくれる。

    • rails generate migration add_password_digest_to_users password_digest:string
  • テストクラスのsetupメソッド内に書かれた処理は、各テストが走る直前に実行される

  • モデルのvalidateの文法

    • validates :name, presence: true, length: { maximum: 50 }
  • modelの検証でエラーになった内容はuser.errors.full_messagesで確認できる

  • %w[]で文字列の配列を作れる e.g. %w[foo bar baz] => ["foo", "bar", "baz"]

  • callbackメソッド => ある特定の時点で呼び出されるメソッド

    • e.g. before_save { self.email = email.downcase }
  • ハッシュ化した後の値のことをダイジェストという。本章ではパスワードのダイジェストをDBに保存する。

  • パスワードを平文ではなくダイジェストで持っておくとDBからデータが流出したとしても、パスワードに復元できないので乗っ取られることがない。

  • Rails標準のhas_secure_passwordを使ってパスワードのハッシュ化保存を実装できる

  • has_secure_passwordを使用するには以下2点を満たす必要がある

    1. モデルにpassword_digest:stringを追加する必要がある
    2. 'bcrypt'gemが必要なので、Gemfileに追記してbundle installしておく
  • has_secure_passwordを追加すると、authenticateメソッドが使えるようになる

  • 多重代入 (Multiple Assignment)

    • 次のような文法で2箇所に同時に同じ値を代入できる
      • @user.password = @user.password_confirmation = "a" * 5
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0