前置き
Railsで、StringやArrayの値のチェックをする際、nil? empty? blank? present?
の使い分けをいつも調べ直しているので、共有メモとして投稿します。 (調べればたくさん記事は出てきますが...)
nil?
値がnilかどうか判定するメソッドです。
nilの場合は true
空のオブジェクト、または何かしら値が存在する場合は false
となります。
nil.nil?
=> true
"".nil?
=> false
"hoge".nil?
=> false
empty?
空のオブジェクトかどうかを判定するメソッドです。
空の場合は true
値が存在する場合は false
となります。
また、nilだった場合は、 NoMethodError
が発生します。
"".empty?
=> true
"hoge".empty?
=> false
nil.empty?
=>
Traceback (most recent call last):
1: from (irb):1
NoMethodError (undefined method `empty?' for nil:NilClass)
blank?
空のオブジェクト、またはnilのオブジェクトかどうかを判定するメソッドです。
( empty? || nil?
と同等)
空のオブジェクト、またはnilのオブジェクトの場合は true
値が存在する場合は false
となります
ただし、TAB文字・スペースは true
が返ります。
nil.blank?
=> true
"".blank?
=> true
"hoge".blank?
=> false
"\t".blank? #TAB文字
=> true
" ".blank? #半角スペース
=> true
" ".blank? #全角スペース
=> true
present?
値が存在するかどうかを判定するメソッドです。
(blank?の反転のため !blank?
と同等)
値が存在する場合は true
空のオブジェクト、またはnilのオブジェクトの場合は false
となります
"hoge".present?
=> true
nil.present?
=> false
"".present?
=> false