72
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

72
72
0

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
72
72

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?