LoginSignup
71

More than 5 years have passed since last update.

Railsでよく使う、tryメソッドの使い方をまとめてみた

Last updated at Posted at 2018-06-03

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を使うこともできるようです。

参考: https://www.sejuku.net/blog/21897

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71