##みなさんよくレコードいじってると、nil
に悩まされるとおもいます。
こんな感じ
puts Order.first.client.address.street
# => NoMethodError: undefined method `client' for nil:NilClass
そうすると真っ先に思いつく解決策はこれ
うーん汚いですねwww
No way!
order = Order.first
if order && order.client && order.client.address
puts order.client.address.street
end
# => nil
##そこで次に思いつくのはRailsのactivesupportを使った方法
order = Order.first
puts order.try(:client).try(:address).try(:street)
# => nil
まぁあまぁあイケてますね〜
##ただruby2.3以降ならもっといけてる方法が!
order = Order.first
puts order&.client&.address&.street
# => nil
これです、swift,c#にもあるsafe navigation operator
という機能を使えばいいのです!
##この記事はmediumのある記事をサクッと翻訳、要約したものです。本家には#dig
の紹介もあるのでぜひご覧ください!
##参照
mediumのページ