学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails6.0 | 15 | Webアプリケーション開発 | バリデーション(検証)

<<前  [TOP]  次>>


アプリケーションに入力検証の機能を実装していきます。


モデルクラス「C:\Rails6\work\shop\app\models\good.rb」のソースコードを見てみます。


【C:\Rails6\work\shop\app\models\good.rb】

class Good < ApplicationRecord
end



モデルに「validates :title, :description, :image_url, presence: true」というコードを追加します。


【C:\Rails6\work\shop\app\models\good.rb】

class Good < ApplicationRecord
	validates :title, :description, :image_url, presence: true
end



「validates()」メソッドはRailsに標準で用意されている検証メソッドです。
モデルのフィールドを条件に照らしてチェックします。
「presence: true」は指定されたフィールドが存在し、その内容が空でないことを確認せよという意味のパラメータです。
では「商品登録」のリンクから登録フォームに移動し、フィールドが空の状態で「Create Good」ボタンを押してみます。


エラーメッセージの表示
エラーメッセージの表示


価格フィールドに入力された数が有効な値かどうかをチェックします。
「numericality()」オプションを使い「validates :price, numericality: {greater_than_or_equal_to: 1}」として1以上の数字のみの許可を与えます。


【C:\Rails6\work\shop\app\models\good.rb】

class Good < ApplicationRecord
	validates :title, :description, :image_url, presence: true
	validates :price, numericality: {greater_than_or_equal_to: 1}
end



価格の検証
価格の検証


商品につけた名前が他の商品と重複していないかどうかを確認します。
「validates :title, uniqueness: true」

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でなければなりません。'
}



【C:\Rails6\work\shop\app\models\good.rb】

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



正規表現による画像URLの検証
正規表現による画像URLの検証


↓↓クリックして頂けると励みになります。


<<前  [TOP]  次>>