本日2記事目ですね。
もうビール飲みたいけどまだ飲まないんだから!!
(飲みながら記事書いて、誤字脱字多かったら絶望なため)
さーて今回はバリデーションを書く場所について。
張り切っていくわよ〜〜〜〜!!
#1 モデルへのバリデーション
validates :email, presence: true
validates :first_name, presence: true
validates :last_name, presence: true, length: { maximum: 15 }
こんな感じで書くと思うんですよ。
説明すると
【email】 空で値を保存できない
【first_name】 空で値を保存できない
【last_name】 空で値を保存できない、15文字以内じゃないと保存できない。
って感じのバリデーションを書きます。
じゃあこれで問題なしだね!!って思うでshow。
###これだとmysql(DB)に直接打ち込む時にバリデーションかからないよ!!
そうなんです。
モデルへのバリデーションはRails側(MVC)の判定だけで、mysqlとかDBには反映されないんです。
#2 それならマイグレーションファイルにバリデーションだっ!
t.string :first_name, null:false
t.string :last_name, null:false
t.string :email, null:false
こっちではカラムに空の値では保存できない様バリデーションをかけています。
###じゃあマイグレーションファイルだけにバリデーションかければよくね?
と思われるかもしれません。
ですがDBにバリデーションチェックをしてもらうと、わかりづらいエラーが返ってきたり、
もしくはモデルにちゃんとバリデーションを書いているとエラーメッセージを出せたりと色々汎用性があるのです。
#3 結果 両方に書いた方が良い
結果これなんです。
めんどくさいかもしれないんですが、両方に書くのが安全なんです。
こんなメリットがあるよ!こんな危険性があるよ!
とか補足情報がありましたらご教示頂けたら幸いです。
読んで頂きありがとうございました!