tryメソッドとは何なのか
**オブジェクトがnilでない場合のみ、そのオブジェクトのメソッドを実行したい!**って時に使うメソッドです。
これを使うことによって、オブジェクトがnilの時にメソッドを使ってエラーを吐いてしまうのを防ぐことができます。
##tryメソッドを使えるようにする
Ruby単体では使うことができません。
なのでまず、ActiveSupportを使ってRuby言語を拡張する必要があります。
gem install activesupport
##tryメソッドの使い方
まず、以下の二つの式を見比べて見ましょう。
user ? user.age : "年齢なし" #userがいるか確認している
user.try(:age) || "年齢なし" #userがいるか確認していない
どちらも、userがnilならばuserのage(年齢)を表示し、nilでなければ「年齢なし」を表示する処理を書いています。
前者は、いちいちuserがnilなのか確認してメソッドを実行するか判断しているのに対し,
後者は、userがnilでない場合のみメソッドを実行しています。
こう見ると後者の方が簡潔ですよね。
また、以下のように連続して使うことも可能です。
user.try(:posts).try(:content) #userがいればpostsを実行し、postsがあればcontentを出力
##tryとtry!の違い
また、tryの他に**try!**というものもあります。
違いはこんな感じです。
###try
userがnilの時、何もしない
userにメソッドが実装されてない時、何もしない
###try!
userがnilの時、何もしない
二つの効用をもつtryに対して、一つの効用しか持たないものがtry!ですね。
また、user.try!(age)
の代わりに、user&.age
を使うこともできるようです。