みなさんよくレコードいじってると、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
という機能を使えばいいのです!