rubyでif条件式がtureになる条件

ややこしいタイトルですね。
rubyを書いていて、すごく基本的なところでハマってしまったのでメモ。

結論から言うと、rubyでif条件式がtureになる条件は以下の通りです。

 ①falseでない
 ②nilでない

つまり、0や空文字列、空配列は真となります。

if Member.find_by_id(current_user.id)
  print 'いるよ!'
else
  print 'いないよ!'
end

はMemberにcurrent_userが存在しないときnilが返るため"偽"となりますが、

if Member.where(:id => current_user.id)
  print 'いるよ!'
else
  print 'いないよ!'
end

はMemberにcurrent_userが存在しないとき[](空配列)が返り、"真"となります。

基本だけど、気をつけた方が良さそうです。
曖昧なままで理解した気になる自分の脳を破壊したいです。


明解!Ruby―奥深いRubyの文化を身に付けるテクニック

明解!Ruby―奥深いRubyの文化を身に付けるテクニック

  • 作者: ラスオルセン,Russ Olsen,パセイジ
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2012/12
  • メディア: 単行本
  • 購入: 3人 クリック: 20回
  • この商品を含むブログを見る