とあるオブジェクト 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 endnil かどうかを意識しなくてすむというのは非常に大きい。