Ruby on Railsの勉強〜モデルの検証1〜
・データベースにデータが送られてくるときそぐわないデータは受け入れないといった制約をすることはデータの値の「内容の範囲」をデータベースで定義することで予防できる。
NOT NULL制約(データが空だったらデータを受け付けない)
ソースコード db/migrate/xxxxxxxxxxxxxx_create_tasks.rb
class CreateTasks < ActiveRecord::Migration[6.0]
def change
create_table :tasks do |t|
t.string :name, null: false
t.text :description
.....
他にも、文字列のカラムの長さを指定する データ型じゃないと受け付けないなどある。
しかし、これだけでは制約外ならだめ!と決まったエラーメッセージしかでなくてユーザーがなんでエラーになっているかわからないなどWebアプリケーションの機能としては物足りない。
そこで「モデルの検証」を行う。
モデルの検証はRubyのコードでデータの内容の正しさをチェックする検証の仕組みが用意されている。
これを使うと非常に自由度の高いチェックを行った上でユーザーにわかりやすいエラーメッセージを送ることもできる。
モデルの検証さえしっかり行っていればデータベースの定義でデータの範囲をあまり制限をしなくてもデータの情報はそこそこ正しい状態で保たれる。
とはいえ、モデルの検証が実行できないケースもあるのでデータベース側からの制限も確実に行っていた方が良い。