↓↓クリックして頂けると励みになります。
【08 | 商品リストの外観を整える】 << 【ホーム】 >> 【10 | バリデーションの日本語化】
Railsのバリデーション(Validation)は、Active Recordモデルにおいてデータの整合性を保つために使用される機能です。
データベースに保存される前に、モデルの属性が特定の条件を満たしているかどうかを検証するために利用されます。
これにより、無効なデータがデータベースに保存されるのを防ぐことができます。
では早速、アプリケーションに入力検証の機能を実装していきます。
Goodモデルに「validates :title, :description, :image_url, presence: true」というコードを追加します。
「validates()」メソッドはRailsに標準で用意されている検証メソッドです。
モデルのフィールドを条件に照らしてチェックします。
「presence: true」は指定されたフィールドが存在し、その内容が空でないことを確認せよという意味のパラメータです。
「SampleCart/app/models/good.rb」ファイルを以下のように編集します。
記述追加 【SampleCart/app/models/good.rb】2行目
class Good < ApplicationRecord validates :title, :description, :image_url, presence: true end
では「商品登録」のリンクから登録フォームに移動し、フィールドが空の状態で「商品登録」ボタンを押してみます。
もう一つ、バリデーションを追加します。
価格フィールドに入力された数が有効な値かどうかをチェックします。
「numericality()」オプションを使い「validates :price, numericality: {greater_than_or_equal_to: 1}」として1以上の数字のみの許可を与えます。
記述追加 【SampleCart/app/models/good.rb】3行目
class Good < ApplicationRecord validates :title, :description, :image_url, presence: true validates :price, numericality: {greater_than_or_equal_to: 1} end
次は商品につけた名前が他の商品と重複していないかどうかを確認します。
4行目に「validates :title, uniqueness: true」の記述を追加しています。
記述追加 【SampleCart/app/models/good.rb】4行目
class Good < ApplicationRecord validates :title, :description, :image_url, presence: true validates :price, numericality: {greater_than_or_equal_to: 1} validates :title, uniqueness: true end
画像のURLが「.gif」「.jpg」「.png」のどれかで終わっていることを確認します。
これには正規表現を利用します。
validates :image_url, allow_blank: true, format: { with: %r{\.(gif|jpg|png)\z}i, message: 'はGIF、JPG、PNG画像のURLでなければなりません。' }
記述追加 【SampleCart/app/models/good.rb】6行目
class Good < ApplicationRecord validates :title, :description, :image_url, presence: true validates :price, numericality: {greater_than_or_equal_to: 1} validates :title, uniqueness: true validates :image_url, allow_blank: true, format: { with: %r{\.(gif|jpg|png)\z}i, message: 'はGIF、JPG、PNG画像のURLでなければなりません。' } end
【08 | 商品リストの外観を整える】 << 【ホーム】 >> 【10 | バリデーションの日本語化】
↓↓クリックして頂けると励みになります。