プロパティを持つ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
. try
Railsのメソッドについて読みました:
u = User.find(1)
letter = u.try(:email).try(:upcase).try(:last)
これはあまり冗長ではありませんが、これらすべての試みを書くのはうんざりです。そしてtry
、チェーンを入れたら、最後まで使わなければなりません。より良い方法はありますか?