Railsでの空文字チェックをすることが普通ですが色々種類があるので注意しましょう。
empty?
Ruby標準メソッドです。文字列か配列の中身が空の場合にtrueを返します。空白のみの文字列(" ")はfalseを返しますし、nilやtrueやfalse、Integer(数値)には対応していません。(NoMethodErrorになります。)
nil?
Ruby標準メソッドです。文字列や配列が存在しない場合のみ(nilの場合のみ)にtrueを返します。
blank?
ActiveSupport(Rails)で拡張されたメソッドです。nil、空文字("")、空白のみの文字列(" ")、空配列、空ハッシュ、false等でもtrueを返してくれます。対応できる範囲が広いので所構わず使うと意図が読みづらくなってしまうため注意が必要です。
特に空白のスペースなどがtrueが帰ってくるのは注意と言えるでしょう。(empty?ではfalseが帰るので。)
present?メソッドの逆です。オブジェクトが存在しなければtrue、存在すればfalseを返す。
用途
nilと空文字と空白のみの文字列を同様の評価としたい場合に使います。nilと空文字や空白のみの文字列で評価を分けたい場合はnil?やempty?を使うようにしましょう。読み手に意図が明確に伝わります。
present?
ActiveSupport(Rails)で拡張されたメソッドです。blank?の逆で、!blank?とは同じ意味になります。
オブジェクトの値が存在するかどうか真偽を返します。オブジェクトが存在すればtrue、存在しなければfalseを返す。(具体的にはnil、false、""、" "、[]、{}の場合はfalseになる。)
なお、数値の0(ゼロ)は値が存在するとみなされるので注意です。
ActiveSupportとは?
Railsを使って開発をする上で便利なメソッド等をまとめたライブラリです。純粋なRubyには存在しません。
ActiveSupportが提供している機能
present?メソッド、blank?メソッドの他に以下のような機能があります。
starts_with?メソッド
実際のRubyのstart_withメソッドと同じですが「s」がつくので注意です。
ends_with?メソッド
実際のRubyのend_withメソッドと同じですが「s」がつくので注意です。
この記事へのコメントはありません。