ヘイヘイバリデーションってモデルとマイグレーションファイルどっちに書けば良いんだyo
本日2記事目ですね。
もうビール飲みたいけどまだ飲まないんだから!!
(飲みながら記事書いて、誤字脱字多かったら絶望なため)
さーて今回はバリデーションを書く場所について。
張り切っていくわよ〜〜〜〜!!
1 モデルへのバリデーション
user.rb
validates :email, presence: true
validates :first_name, presence: true
validates :last_name, presence: true, length: { maximum: 15 }
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 それならマイグレーションファイルにバリデーションだっ!
migrate/create_users.rb
t.string :first_name, null:false
t.string :last_name, null:false
t.string :email, null:false
t.string :first_name, null:false
t.string :last_name, null:false
t.string :email, null:false
こっちではカラムに空の値では保存できない様バリデーションをかけています。
じゃあマイグレーションファイルだけにバリデーションかければよくね?
と思われるかもしれません。
ですがDBにバリデーションチェックをしてもらうと、わかりづらいエラーが返ってきたり、
もしくはモデルにちゃんとバリデーションを書いているとエラーメッセージを出せたりと色々汎用性があるのです。
3 結果 両方に書いた方が良い
結果これなんです。
めんどくさいかもしれないんですが、両方に書くのが安全なんです。
こんなメリットがあるよ!こんな危険性があるよ!
とか補足情報がありましたらご教示頂けたら幸いです。
読んで頂きありがとうございました!
Author And Source
この問題について(ヘイヘイバリデーションってモデルとマイグレーションファイルどっちに書けば良いんだyo), 我々は、より多くの情報をここで見つけました https://qiita.com/rockettetsu/items/4d0fc754ab2e2aca7c13著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .