Object#presenceが便利

ActiveSupport 2.3で導入されたObject#presenceが便利。

たとえば、

time = options[:timestamp].presence || Time.now

で初期値の代入に使えるし、

time = options[:timestamp].presence && Time.at(options[:timestamp])

で値がある場合に限って加工に使える。

組み合わせれば、

time = (options[:timestamp].presence && Time.at(options[:timestamp])) || Time.now

で値があれば加工して、なければ初期値を代入することができる。

でもこれはさすがにわかりづらいので、三項演算子を使って

time = options[:timestamp].present? ? Time.at(options[:timestamp]) : Time.now

としたほうがカッコが減ってわかりやすい。

ActiveSupportがないと生きていけないゆとりになってしまった…。