プロパティを持つUserオブジェクトがemailあり、大文字の最後の文字が必要だとしますemail。
u = User.find(1)
letter = u.email.upcase.last
uまたはemailがnilこのチェーンにある場合、 NoMethodError: undefined method 'blah' for nil:Nilclass. ほとんどの場合、私はそれを回避できるはずですが、あるnilべきではない場所に到達したり、収容するのが難しい場合があります。1 つの方法は冗長になります。
u = User.find(1)
letter = nil
if u && u.email
letter = u.email.upcase.last
end
しかし、これは、ビューやa.bunch.of.properties.down.a.hierarchy. tryRailsのメソッドについて読みました:
u = User.find(1)
letter = u.try(:email).try(:upcase).try(:last)
これはあまり冗長ではありませんが、これらすべての試みを書くのはうんざりです。そしてtry、チェーンを入れたら、最後まで使わなければなりません。より良い方法はありますか?