AR삽질러

Rails 一日一つメソッド (Day30) validation 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day30) validation

아랑팡팡 2024. 2. 7. 15:52
728x90

 

Rails 一日一つメソッド (Day30) validation

 

1. validationとは?

 - validationとは、データベースに保存する前に内容を検証する機能。

 - valitatesメソッドを使うことで、ModelオブジェクトがDataBaseに保存する前にオブジェクトのデータが特定の条件に合うかどうかを確認できる。validates検証が失敗した場合、オブジェクトは保存されないし、エラー メッセージを含む状態で返される。

 

2. validationの主なメソッド

  - Modelの属性に対する特定の検証ルールを設定するため使う。

 

 1) validates

  - 複数の検証を一度に設定する

validates :name, :email, presence: true, uniqueness: true

 

 2) validates_presence_of

  - 指定された属性が空でないことを検証する。

 

 3) validates_length_of

  - 文字列の長さが指定された範囲内であることを検証する。

 

 4) validates_numericality_of

  - 数値であることを検証する。

 

 

3. validationのトリガ

 - validation検証は ActiveRecordの Call Backメソッドによってトリガされる。

validationのトリガ
save ModelインスタンスをData Baseに保存する。
validation検証を行い、検証に失敗した時 falseを変えす。
save! saveと似ているけど、validation検証を失敗すると、ActiveRecord::RecordInvalid例外を発生させる。
create 新しいModelインスタンスを生成し、DataBaseに保存する。
Validation検証に失敗したら、オブジェクトは保存されないし、falseを返す。
create! createと似ているけど、validation検証に失敗するとActiveRecord::RecordInvalid例外を発生させる。
update 一つ以上のModelインスタンスをUpdateし、Data Baseに保存する。
validation検証を行い、検証に失敗した時 falseを変えす。
update! updateと似ているけど、validation検証を失敗すると、ActiveRecord::RecordInvalid例外を発生させる。

 

 

4. validation使い方

validates :カラム名、ヘルパー
validates :カラム名, :カラム名, :カラム名, :カラム名, :カラム名, ヘルパー

 

 

validates :email, validation: {option: value}, ...

 :email

 - 検証するModelの属性

 validates:

 - 適用する検証の種類( presencem uniqueness, format, length ...)

 {option: value}

 - 該当する検証し対するオプション。

 

5. validationのヘルパー

 - ヘルパーを使ってどんな検証が行われるのかを定義する。

 1) presence

  - 属性が空ではないか、を検証する。

validates :カラム名, presence: true
validates :email, presence: true

 - emailカラムに値が入っているかを検証する。

 

 2) adsence

 - presenceと逆に [空であるか]を検証する。

validates :カラム名, absence: true
validates :email, absence: true

 - emailカラムに値な入っていないかを検証する。

 

 2) uniqueness

  - 属性の値がDataBase内で Unique(重複していない)であることを検証する。

validates :カラム名, uniqueness: true
validates :email, uniqueness: true

 - email属性の値がDataBase内で Unique(重複していない)であることを検証する。

 

 2) length

  - 属性の長さを定義する。

オプション 内容
minimum 最小値を指定する。
maximum 最大値を指定する。
in 長さの範囲を指定する。
is 値の長さを指定する。

 

validates :password, length: { minimum: 6 }
validates :password, length: { maximum: 10 }
validates :password, length: { in: 5..10 }
validates :password, length: { is: 5 }

  - password属性の長さが最小6文字であることを検証する。

 

 3) numericality

  - 属性に数値のみ、0以上が使われていることを検証する。

validates :カラム名, numericality: true
Option 制約
:only_integer trueにすると整数のみを指定する。
:greater_than 指定された値よりも大きくなければならない
:greater_than_or_equal_to 指定された値と等しいか、それよりも大きくなければならない
:equal_to 指定された値と等しくなければならない
:less_than 指定された値よりも小さなければならない
:less_than_or_equal_to 指定された値と等しいか、それよりも小さくなければならない
:other_than 渡された値以外の値でなければならない
:odd trueにすると奇数であるかを指定する。
:even trueにすると偶数であるかを指定する。

 

validates :preice, numericality: { only_integer: true }

  - price属性が数値でありながら、0以上であることを検証する。

 

 4) inclusion

  - 値が指定した文字になっていることを検証する。

validates :カラム名, inclusion: { in: ["検証したい文字"] }
validates :カラム名, inclusion: { in: %w(検証したい文字1, 検証したい文字2) }

 

 5) exclusion

  - 指定された値が含まれていないかを検証する。

validates :カラム名, exclusion: { in: ["検証したい文字1"] )
validates :nick_name, in: %w(admin)

 

 6) acceptance

  - チェックボックスがオンになっているかどうかを検証する。

validates :カラム名, acceptance: true

  - 「Login」ボタンとか「同意する」などのチェクブックスにチェックが入っているかを検証する。

 

 7) confirmation

  - 2つのフォームで入力された内容が完全に一致するかを検証する。

validates :カラム名, confirmation: true
validates :email, confirmation: true

 

 

728x90
반응형
LIST