方法を試すより良い代替手段
概要
きれいなコードが欲しいのですが、これでは不格好に感じると思います。
これを行うより良い方法はありますか?
User.try(:profile).try(:settings).try(:card).try(:options)
try メソッドを削除すると、nil メソッド エラーが発生します。
次のようなことを行う別のコードがありますか:
User.try(:profile,:settings, :card, :options)
解決策
Ruby 2.3.0 からは & が使えるようになりました。 try の代わりにメソッドを使用します。
User&.profile&.settings&.card&.options
しかし、このようなことは避けるべきです。
nil を返す可能性のあるオブジェクトにメッセージを送信する場合、またはオブジェクトがそのメッセージに応答しない場合、それは独自に解決する必要がある問題です。 try を使用しても、nil チェックと同様に、問題が悪化するだけです。一貫して動作する一貫したインターフェイスを作成します。