presence
値が空の場合にバリデーションエラーを起こす。
presence
このヘルパーは、指定された属性が空(empty)でないことを確認します。値がnilや空文字でない、つまり空でもなければホワイトスペースでもないことを確認するために、内部でObject#blank?メソッドを使っています。
例:
validates :foo_column, presence: true,
allow_nil
値がnilの場合にバリデーションをスキップする。
例:
validates :foo_column, format: { with: /REGEXP/ }, allow_nil: true
あくまで役割は「バリデーションのスキップ」なので、これを指定したからと言って値にNULLを許可するわけではない。
バリデーションを何も書かなければ、RailsのバリデーションとしてNULLは最初から許容される。
つまり何もバリデーションを指定せずに allow_nil: true
を指定しても意味がない。
(エラーが発生する)
例:
validates :foo_column, allow_nil: true
# raise ArgumentError, "You need to supply at least one validation" if validations.empty?
この指定は属性のバリデーション全体ではなく、バリデーション指定の単位で評価される。
たとえば次のように書いた場合、値がNULLであっても、1行目のバリデーションはスキップされるが、2行目のバリデーションには引っかかる。
validates :foo_column, format: { with: /REG/}, allow_nil: true
validates :foo_column, format: { with: /EXP/ }
allow_blank
allow_nil と同じように動くが、こちらは値がblankの場合にバリデーションをスキップする。
すなわち presence と allow_blank を同時に指定しても意味がない
例:
validates :foo_column, presence: true, allow_blank: true
ガイド
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。