4-3 モデルの「検証」

現場Rails学習中

chapter 4-3 -1 モデルの検証の仕組み

  • モデルオブジェクトの登録・更新を行うのがsaveメソッド(モデルはデータベースとのやりとりが仕事)
  • saveメソッドは検証を自動で行い、エラーがあればfalse、なければtrueを返す
  • 検証を行うだけなら、valid?というメソッドが使える。
  • save!メソッドは検証エラーが発生したらfalseではなく、例外を発生させる。
  • 検証エラーを無視して、
~.save(validate: false)

  のようにデータベースに登録、更新することができる。

chapter 4-3 -2 検証の書き方

  • Railsのヘルパーを利用する or 自分で任意の検証コードを記述する
  • ヘルパーの例(~は対象属性の名前)
validates :~, presence: true #必須のデータが入っているか
validates :~, numericality: true #数値以外が入ってきていないか
validates :~, inclusion: {in: 0..9} #範囲が期待通りか
validates :~, length: {maximum:30} #文字列の長さが適切か

など、たくさんある。

chapter 4-3 -3 検証の追加

  • validates で検証を追加できる
~.errors.full_messages

を使うと、検証エラーの内容がわかりやすい。

  • persisted?メソッドを使うとデータベースに保存済みかわかる

chapter 4-3 -4 コントローラとビュー

  • name属性の検証によって登録がうまくいくかのif文の作成
  • error.present?を用いて、検証エラーが起きた時にエラーメッセージを表示させる

chapter 4-3 -5 文字列の長さ

  • 文字列の長さにも制限をかける
validates :~, length: { maximum: 40 }
  • 一文で書くこともできる
validates :~, presence: true, length: {maximum: 40}

chapter 4-3 -6 オリジナル検証コード

  • モデルにvalidate: ~ でモデルクラスにメソッドを登録する
  • 検証用メソッドを追加する
def ~
    errors.add(:~~, "コメント") if ~~&.include?("チェックする語")
end
  • &.を使うのは~~にnilが入った時に例外にならないようにするため。

chapter 4-3 -7 検証が行われない

  • 検証を行うメソッド、行わないメソッドがある
  • 行うもの save,update,createなど
  • 行わないもの update_attribute,update_column,update_allなど

まとめ

本文をまとめるだけだったが、意味があったのかわからない。何もしないよりはいいだろうが、次からは自分の言葉で、分かったところ、わからないところを書いてみて、わからなかったところを調べるなどやっていきたい。