2011/08/04

Object#try マジ便利

Rails 2.3 から導入された Object#try これ便利ですね。
とあるオブジェクト obj があって attr という属性を持っている場合、obj.try(:attr) とすると、obj が nil でもエラーがでないと。
# これが
value = obj ? obj.attr : nil

# こんな風にかける
value = obj.try(:attr)

# ほかにもこんなのが
if obj && obj.attr_1 && obj.attr_1.attr_2
  value = obj.attr_1.attr_2.attr3
end

# こうかける
if obj.try(:attr_1).try(:attr_2)
  value = obj.attr_1.attr_2.attr_3
end
nil かどうかを意識しなくてすむというのは非常に大きい。