【Rails】nil?, empty?, blank?, present?, exists?の違いと使いどころ

Ruby

nil?

nil?はRubyのメソッドです。
nilの場合true、それ以外はfalseを返します。
""(空文字)、" "(空白)、[](空配列)、{}(空ハッシュ)などもfalseになるため、純粋にnilをチェックしたい場合に利用します。

empty?

empty?はRubyのメソッドです。
""(空文字)、[](空配列), {}(空ハッシュ)の場合はtrueになります。" "(空白)の場合はfalseです。
nil、数字、真偽値に対してempty?を実行するとNoMethodErrorが発生します。

empty?は文字列や配列やハッシュなど、なにかしらの値の入るオブジェクトであるという前提のもと、値が空かどうかを判定します。
ですので、" "(空白)のように『存在するオブジェクトの中身が空かどうかを判定したい』場合empty?の使いどころですが、例外が発生する可能性のあるメソッドなので使用する際は注意が必要です。

blank?

blank?はRailsのメソッドです。
nil, false, ""(空文字), " "(空白), [](空配列), {}(空ハッシュ)の場合にtrue、それ以外の場合にfalseを返します。
真偽値の判定結果は!present?と等価です。

nilもしくはオブジェクトにデータが存在しない場合を判定する際blank?を利用します。

present?

present?はRailsのメソッドです。
present?!blank?と等価です。
blank?と逆のことをしたい場合present?を利用します。

present?と似たメソッドにpresenceがあります。
present?presenceの違いの詳細解説は【Rails】present?とpresenceの違いと使いどころで紹介しています。

exists?

exists?はSQLのexists句に該当するRailsのメソッドです。

ActiveRecord::Relationの存在有無を判定をする場合exists?を利用します。
ActiveRecord::Relationに対してpresent?を実行するとパフォーマンス面で問題があります。1 2

参考