そもそもバリデーションとは
入力フォームなどでユーザーが故意または過失のもと誤った情報を入力した際に、入力内容をそのまま登録するのではなく、エラーをかえすこと。
これにより、誤情報を未然に防ぐほか、攻撃者からのXSSなども防ぐことが可能になる。
実装例
RailsのModelに記述します。
- 空データを登録できないようにする
member.rb
class Member < ApplicationRecord
validates :name, presence: true
end
- 文字数を制限する。
member.rb
class Member < ApplicationRecord
#長さの上限を50文字に設定
validates :name, length: { maximum: 50 }
#長さの下限を2文字に設定
validates :name, length: { minimum: 2 }
#長さの範囲を2-50文字
validates :name, length: { in: 2..50 }
validates :name, length: { minimum: 2, maximum: 50 }
#長さを5文字に指定
validates :name, length: { is: 5 }
end
- 数値のみ許可
member.rb
class Member < ApplicationRecord
validates :age, numericality: { only_integer: true }
end
- 同一データを登録できないようにする
member.rb
class Member < ApplicationRecord
validates :name, uniqueness: true
end
- 特定の値が含まれている場合のみ許可
member.rb
class Member < ApplicationRecord
#1~3のいずれかの数字のみ許可。
validates :flg, inclusion: { in: 1..3 }
end
-メールアドレスの形式のみ許可
member.rb
class Member < ApplicationRecord
VALID_EMAIL = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, format: { with: VALID_EMAIL }
end
参考資料
https://railsguides.jp/active_record_validations.html
https://rails-study.net/validation/
https://www.sejuku.net/blog/25973