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