学生向けにプログラミングを解説。次>>登録フォームで入力するフィールドが空の状態であったり、正しくないデータ形式である場合にそのまま保存できてしまうと困ります。そこで、入力された値をデータベースに保存する前にチェックします。その仕事をするのがvalidates(バリデート)です。validatesはモデルで定義します。server」と入力して「Puma」を起動します。続いて「shop」フォルダの中の「app」フォルダに進み、さらに「models」フォルダにある「good.rb」ファイルをテキストエディタで開きます。初期状態は以下のようになっています。ApplicationRecordendこのGoodクラスにvalidatesを実装していきます。「validates_presence_of」を追加してみます。「validates_presence_of」は、フィールドが空白でないかどうかをチェックするメソッドです。記述方法は以下の通りです。ファイルを保存するときに「UTF-8」で保存することを忘れないで下さい。ApplicationRecord#Railsで標準で用意されている検証メソッド#指定されたフィールドが存在し、その内容が空でないことを確認。"が空の状態で保存することは出来ません。"endこれで「title」「image_url」「maker」「category」が空の状態で保存しようとすると、「~が空の状態で保存することは出来ません」というエラーメッセージがでます。ブラウザで「http://localhost:3000/goods」と入力して実際に確認してみます。次は価格が有効な数値であるかチェックします。検証には、「validates_numericality_of」メソッドを利用します。記述方法は、以下のようにします。ApplicationRecord#Railsで標準で用意されている検証メソッド#指定されたフィールドが存在し、その内容が空でないことを確認。"が空の状態で保存することは出来ません。"#priceフィールドに数字か入力されているか検証。"が有効な数値ではありません。"end今回の場合、テーブル作成時に「price」フィールドをinteger型にしていしているので、整数以外は入力出来なくなっています。空の状態で登録しようとするとエラーが出ます。priceフィールドには商品の価格が入りますので、マイナスの数字が入らないようにします。このチェックのためにprice_validate()というメソッドを作成し、このモデルクラスに追加します。:price_validate」と先頭行に追加します。「good.rb」ファイルに次のように記述を追加しましょう。:price_validate#Railsで標準で用意されている検証メソッド#指定されたフィールドが存在し、その内容が空でないことを確認。"が空の状態で保存することは出来ません。"#priceフィールドに数字か入力されているか検証。"が有効な数値ではありません。"#商品の価格が正の数であることを確認する。#価格フィールドが空でないときだけチェックをする。"は0より大きくなければなりません。0.0endendこのprice_validate()メソッドは、保存されるときにだけ呼び出されれば良いので外部から呼び出されることは避けなければなりません。そのため、このメソッドはprotectedで指定しました。これでこのメソッドはこのクラスでしか利用することが出来なくなりますerrors.add()には、最初のパラメータとしてフィールド名を指定します。2番目のパラメータには、エラーとして表示させるメッセージを指定します。price.nil?」として、priceフィールドが空(nil)でないかどうかを確認しています。フィールドが空であればこの検証は行われません。0」として価格が0より大きな値であることを指定しています。登録される商品の名前が重複して登録されないようにします。名称重複の検証は「validates_uniqueness_of」メソッドを利用します。:price_validate#Railsで標準で用意されている検証メソッド#指定されたフィールドが存在し、その内容が空でないことを確認。"が空の状態で保存することは出来ません。"#priceフィールドに数字か入力されているか検証。"が有効な数値ではありません。"#titleフィールドに保存しようとする名称が存在していないかどうかを確認。"はすでに存在しています。"#商品の価格が正の数であることを確認する。#価格フィールドが空でないときだけチェックをする。"は0より大きくなければなりません。0.0endend今度は正規表現を利用した検証を行います。「image_url」が「.jpg」「.png」「.gif」のどれかで終わっているかどうかを確認します。()」メソッドを利用します。:price_validate#Railsで標準で用意されている検証メソッド#指定されたフィールドが存在し、その内容が空でないことを確認。"が空の状態で保存することは出来ません。"#priceフィールドに数字か入力されているか検証。"が有効な数値ではありません。"#titleフィールドに保存しようとする名称が存在していないかどうかを確認。"はすでに存在しています。"#フィールドの値が正規表現に一致するかどうかをチェック。#.gif,.jpg,.pngのどれかで終わっていることを確認。"はGIF,JPG,PNG画像でなければなりません。"#商品の価格が正の数であることを確認する。#価格フィールドが空でないときだけチェックをする。"は0より大きくなければなりません。0.0endend正規表現は「:with」パラメータに渡します。/\a|\.jpg$|\.png$|\.gif$\z/,「/」~「/」の間に正規表現の記述をします。「\a」は「行頭」、「\z」は「行末」を意味しています。「|」はいずれかの文字という意味です。注文情報入力フィールドにvalidateを設定します。カート全体の合計価格を実装します。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。