0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Railsで入力フォーム等にバリデーションを設定する

Posted at

そもそもバリデーションとは

入力フォームなどでユーザーが故意または過失のもと誤った情報を入力した際に、入力内容をそのまま登録するのではなく、エラーをかえすこと。
これにより、誤情報を未然に防ぐほか、攻撃者からの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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?