Model
class User < ApplicationRecord
validates :name, exclusion: { in: [nil] }
end
動作イメージ
User.create!(name: nil)
ActiveRecord::RecordInvalid: 名前 は予約されています
User.create!(name: "")
# 成功
ガイド
presence は?
空文字を禁止してしまう
2.9 presence
このヘルパーは、指定された属性が「空でない」ことを確認します。値がnilや空文字でない(つまり空欄でもなければホワイトスペースでもない)ことを確認するために、内部でblank?メソッドを使っています。
class Person < ApplicationRecord
validates :name, :login, :email, presence: true
end
allow_blank は?
値が未入力、空文字の時にバリデーションをスキップするためオプション指定であり、空文字を許容するわけではない
3.2 :allow_blank
:allow_blankオプションは:allow_nilオプションと似ています。このオプションを指定すると、属性の値がblank?に該当する場合(nilや空文字など)にバリデーションがパスします。
class Topic < ApplicationRecord
validates :title, length: { is: 5 }, allow_blank: true
end
Topic.create(title: "").valid? # => true
Topic.create(title: nil).valid? # => true
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。