【Rails】nil? empty? blank? present? の使い分けを解説!

こんにちは!CodeClub965のKです!

今回はRuby on Railsにおける(以降Rails)、nil?、empty?、blank?、present?の使い分けについて解説しようと思います。

便利なメソッドではありますが、使い方がごちゃごちゃになる方もいると思ったので記事にまとめておこうと思いました。

まず、前提の知識として以下のことは頭の片隅に置いといてください。

Rubyで定義されたメソッド: nil?empty?
Railsで拡張されたメソッド: blank?present?

blank?, present?は、RailsのメソッドのためRubyのみでは使えないことに注意してください。

それでは一つずつみていきましょう。

nil?

nil?は、そのままですが、「nil(存在しない)」 であれば真(true)を返すメソッドです。

id.nil?

これは、もし「id」が存在しない場合ならtrueを返します。

empty?

empty?は、対象が「空」であれば真(true)を返すメソッドです。
また、空白文字であっても、長さが 0 でなければ偽(false)を返します

id.empty?

まず、「id」そのものが存在していることが前提となります。
存在しなければ、NoMethodErrorが発生します。

なので上記では、「id」が空の場合はtrueを返します。
(「""」は、trueを返しますが、「" "」はfalseを返します。)

blank?

blank?は、対象が「空白」でかどうかを返します。
empty?と違い、「""」も「" "」も空白扱いになるのでtrueを返します

対象の中身が空か、または、対象そのものが存在しないときの判定に使えます。
(要するに、nilと空のオブジェクトに対して使えます。)

if id.blank?
 何かしらの処理
end

上記の場合、idが空か、そもそもid自体が存在しないのであれば処理に入ります。

present?

present?は、「!blank?」とだけ覚えておけばいいかと思います。
対象に値が入っていればtrueを返します。

if id.present?
 何かしらの処理
end

この場合はblank?と違って、idに値が入っているのであれば処理に入ります。

最後に

今回は、nil?、empty?、blank?、present?の4つのメソッドの使い分けにについて解説しました。

忘れてしまったときは参考にしてみてください。
結構使うメソッドだと思うので理解しておくことをオススメします。

それでは、また!

Follow me!