空値判定メソッドいろいろ
Rails において、nil? 、 empty?、 blank?、 present? はオブジェクトの中身を判定する便利なメソッドだが、使い分けが難しいのでまとめる。
nil?メソッド
レシーバがnilであるときtrueを返す。
nil.nil? # => true
"abc".nil? # => false
0.nil? # => false
[].nil? # => false
empty? メソッド
レシーバが"", [], {}のとき、trueを返す。
(空のときtrueになる)
"".empty? # => true
[].empty? # => true
{}.empty? # => true
"abc".empty? # => false
[1, 2, 3].empty? # => false
blank?メソッド
blank? メソッドは、レシーバが
false、 nilに加えて、空っぽいオブジェクト("", " ", [], {})
がtrueになる
nil.blank? # => true
"".blank? # => true
" ".blank? # => true
[].blank? # => true
{}.blank? # => true
false.blank? # => true
present? メソッド
blank? メソッドの真偽反転版で、
オブジェクトが偽または空でない値を持っている場合にtrueを返す。
nil.present? # => false
"".present? # => false
" ".present? # => false
"abc".present? # => true
[1, 2, 3].present? # => true