0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Ruby とRails】の真偽判定メソッド

Last updated at Posted at 2022-01-29

はじめに

この記事は、エンジニア経験1年の大学生が実務で勉強になったこと、詰まったこと、調べたことをまとめています。間違っている箇所などがございましたら、指摘していただけると幸いです。

前提

  • Ruby: 2.7.5
  • Rails: 5.2.4.6
  • rails コンソールで実行

内容

条件分岐などで、blank?empty?nil?を使用する時に、どれを使えばいいのか迷ったことはありませんか?実務でよく使われており、その度に調べてました。しかし、頻繁に調べるのはめんどくさいので、まとめることにしました。

真偽判定メソッド

  • nil?
  • empty?
  • blank?
  • present?

Rubyの標準メソッドとRailsで拡張されたメソッドがある。

nil?(Rubyの標準メソッド)

text = "ABCDE"  # => false
text_2 = ""     # => false
text_3 = nil    # => true
text_4 = true   # => false
text_5 = false  # => false
test_6 = 12345  # => false
test_7 = " "    # => false
test_8 = []     # => false
test_9 = {}     # => false
test_10 = 0     # => false

Rubyの標準メソッド。nilの場合のみtrueを返し、それ以外はfalseを返す。

empty?(Rubyの標準メソッド)

text = "ABCDE"  # => false
text_2 = ""     # => true
text_3 = nil    # => NoMethodError
text_4 = true   # => NoMethodError
text_5 = false  # => NoMethodError
test_6 = 12345  # => NoMethodError
test_7 = " "    # => false
test_8 = []     # => true
test_9 = {}     # => true
test_10 = 0     # => NoMethodError

Rubyの標準メソッド。空の文字列や空の配列の場合にtrueを返す。nilに対して呼び出すとNoMethodErrorが発生する。" " 半角スペースの場合、falseを返す。

blank?(Railsのメソッド)

text = "ABCDE"  # => false
text_2 = ""     # => true
text_3 = nil    # => true
text_4 = true   # => false
text_5 = false  # => true
test_6 = 12345  # => false
test_7 = " "    # => true
test_8 = []     # => true
test_9 = {}     # => true
test_10 = 0     # => false

正確にいうと、Railsに入っているActiveSupportのgemのメソッド。Rails以外でもgemを入れると、blank?メソッドなどの便利なメソッドを使うことが出来る。
nilまたは空のオブジェクトをチェック nil, “”, “ “(半角スペースのみ), 空の配列, 空のハッシュのときにtrueを返す。少しややこしいが、falseの場合は、trueを返す。Rubyのみでは使えない。

present?(Railsのメソッド)

text = "ABCDE"  # => true
text_2 = ""     # => false
text_3 = nil    # => false
text_4 = true   # => true
text_5 = false  # => false
test_6 = 12345  # => true
test_7 = " "    # => false
test_8 = []     # => false
test_9 = {}     # => false
test_10 = 0     # => true

正確にいうと、Railsに入っているActiveSupportのgemのメソッド。Rails以外でもgemを入れると、present?メソッドなどの便利なメソッドを使うことが出来る。(実際のメソッドの中身は、!blank?)となっている。なので、stringや配列、ハッシュなど型の器はあっても中身がない場合はfalseになる。
if 変数.present?とunless 変数.blank?は同じ意味 nil, “”, “ “(半角スペースのみ), 空の配列, 空のハッシュのときにfalseを返す。

まとめ

nil? empty? blank? present?は実務でもよく出てくるので、今回まとめることで整理することができました。railsコンソールで簡単に確認できますので、わからなくなった時にでもやってみてください。

参考

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?