ume

rails tutorial 6章 データベース復習

 #前書き

今現在rails tutorial10章に取り組んでいるのですが以前やった内容の理解度が章を重ねるごとに低いなぁと感じたため理解を深めるため復習します。 また同じようにrails tutorialに取り組んでいる方の参考になればと思い記事にしています。

目次

①データベースのバリデーションって何?なぜバリデーションが必要なのか.
②バリデーションを設定するまでの流れ

①データベースのバリデーションって何?なぜバリデーションが必要なのか

バリデーションとはデータベースに情報を保存する前にデータの中身が正しいかどうかをチェックするためのもの。 正しくないものはエラーを出す なぜバリデーションが必要なのか 正しいデータかどうかは自分が決める.
例えばUserの情報が入っているUserモデルがあったとしてそこにユーザーさんからメールアドレスを保存してもらう場合フォームのメールアドレスが空白で登録しようとして、空白がデータベースに保存されてしまうと後からユーザーさんのメールアドレスにメールを送ろうとしても空白で登録されているのでメールを送ることができない。 なので登録時にメールアドレスの欄が空白だと登録できませんといったバリデーションをかける必要がある。メールアドレスは空欄ではいけない=正しいデータと設定することでメールアドレスの欄が空白だとエラーを返す。

②バリデーションを設定するまでの流れ

①テストを書く.
②バリデーションの設定.

①テストを書く.
まず正解のテストとこういう情報がデータベースに登録されようとしたら ダメだよねっていうテストを書く test/modelsの中のファイルにこんな感じで書く

require 'test_helper'

class UserTest < ActiveSupport::TestCase

#正解の情報
def setup
    @user = User.new(name: "Example User", email: "user@example.com", 
                      password: "foobar",
                      password_confirmation: "foobar")

end
#上の情報がデータベースに渡されようとした時オッケーだよね?っていうテスト
  test "should be valid" do
    assert @user.valid?
  end
  
  #こういう情報がデータベースに登録されようとしたら
ダメだよねっていうテスト
  test "name should be present" do
    @user.name = "     "
    assert_not @user.valid?
  end

②バリデーションの設定. こういう情報がデータベースに登録されようとしたら ダメだよねっていうバリデーションを書く app/models

validates :name,  presence: true

書き方はvalidates :カラム名, presense: true⇦空はダメっていう意味。つまりnameカラムは空欄ではいけないよって意味