T or F

まず、rubyだと

「偽」になるのは nil と false だけ。

(PHPとかJSだと "" , " ", 0 , "0", null とかどれが「偽」扱いになるのかすぐ忘れる。)


判定メソッドのメモ(抜粋コピペ)。

nil?

nilとfalseを判別したい場合などに、==演算子を使わずに書ける。

empty?

「入れ物」は存在するのが前提でString や Array の中身が空の場合にtrue. 入れ物がない場合は NoMethodError

blank? (ActiveSupport)

nil? or empty? ※半角スペースだけの文字列はtrueを返す

present? (ActiveSupport)

!blank?

presence (ActiveSupport)

present? が true の場合にレシーバ自身を返す

# こういうのが…
name = params[:name].present? ? params[:name] : '名無し'
 
# presenceを使うとこうなるよ!!
name = params[:name].presence || '名無し'

これ便利!

try (ActiveSupport)

レシーバが nil でなければ指定したメソッドを呼び出す

# こういうのが…
user ? user.name : '名無し'
 
# tryメソッドを使うとこうなるよ!!
user.try(:name) || '名無し'

これも便利!!

tryは Object#sendメソッドの alias で、NilClass#try が定義されているらしいです。

class NilClass
  def try(*args)
    nil
  end
end

これだけなのにすごい。 ActiveSupportとかActiveRecordとかのコードみると勉強になりますね。 スッキリかけるし、エラーハンドリングの時とか特に意識しようと思います。

http://qiita.com/somewhatgood@github/items/b74107480ee3821784e6

http://techracho.bpsinc.jp/baba/2011_11_26/4724

http://www.techscore.com/blog/2012/12/25/activesupport-%E3%81%AE%E4%BE%BF%E5%88%A9%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89-try-blank-present-presence/

http://blog.livedoor.jp/sasata299/archives/51718602.html

この方々の良くまとめられていてとても参考になりましたm(__)m