tryメソッド
Railsコードの中にtryメソッドを発見。最初はRubyのメソッドと思ったけどRailsが用意しているメソッドらしい。
使用用途
使用用途はいたって簡単でオブジェクトがnilでない場合のみ、そのオブジェクトのメソッドを実行したい!時に使う これを使うことによって、オブジェクトがnilの時にメソッドを使ってエラーを吐いてしまうのを防ぐことができます。
使用例
return true if item.try(:item_images).nil?
この場合はitem(商品)がitem_images(商品画像)を持っていない場合にtrueを返す。という意図のコードである。
tryとtry!の違い
a.try(:hoge) #=> nil a.try!(:hoge) #=> NoMethodError
[2020/2/4追記]
tryと&.の違い
両方ともレシーバが nil ではない場合にメソッドを呼び出すという目的なんですが、具体的な挙動は少し違います。
具体的にいうと
&.が『nilでない場合にメソッドを呼び出す』のに対して、#try は『メソッドを呼び出すことができるときにメソッドを呼び出す』
Ruby の &. と #try の違い - Secret Garden(Instrumental)
これだけではよくわからないのでコードで説明
# Stringオブジェクト("hoge")に定義されていないメソッドはnilになる irb(main):314:0> "hoge".try(:to_fuga) => nil # メソッドがない場合はNoMethodErrorが起きる irb(main):002:0> "hoge"&.to_fuga NoMethodError: undefined method `to_fuga' for "hoge":String
ちなみにtry!と&.はほぼ同じ挙動になる