奥が深いよ、validations
みなさん、validationsはご存知でしょうか?
少しでもrubyを勉強されている方は知っていますよね。
validationsは、ユーザーが入力したデータに対して、正しいデータのみDBに保存するメソッドのことです。
例えば、カラムに対して、文字を制限したり、入力が空だったら保存しないようにしたり、正規表現を使って、メールアドレスのフォーマットをチェックすることができます。これから自分でアプリを作る方は、必ずと言っていい程使用すると思いますよ!
記述する場所は、Modelのファイルになります。
記述方法は、ネットで検索していただければすぐに的確な書き方が出るので、参考にしていただければと思います。←ここで教えないのかよ...笑
では、今回なにをアウトプットするかと言うと、
validationsのエラーの確認方法です!
validationsの記述を間違えてしまうと、DBに保存ができないことが多々あります。それが、本日の私です...
チーム開発中で、最新のmasterをpullした途端、急にDBに保存ができなくなりました。
すぐに仮説を立てて、エラーに立ち向かいましたが、なかなか苦戦しました。
そこで、チームメンバーが記述してくれたvalidationsを確認することに。
まず、コントローラのアクションにbinding.pryして、ターミナルで確認
そこで、今日メンバーに教えてもらったコマンドの入力
下記の画像を参照ください
任意のタイミングでオブジェクトのバリデーションを行うメソッドです。
私の場合userなので、この後に.valid? と追記すれば、validationsのエラーの確認ができます。1枚目のtrueが無事に保存できた場合です。
続いて、validationsによってDBに保存ができない場合です。
確認して見ると、falseと出ていますよね。
これは、エラーが起きていて、DBに保存ができていない状況です。
もし、falseが出てしまったら、.errors.full_messagesと入力すると、起きているエラーの内容も確認できます。上記参照。
これによって、どこの部分でエラーが起きているか確認できて、修正することができました。メンバーの方教えてくださってありがとうございます。
少し簡潔に文章を書いてしまいましたが、便利なので困った際は、ぜひ使ってみてください!!
もし間違いやご質問があれば、ぜひぜひお答えさせていただきます。