Duplicar posibles:
Ruby: Nils in an IF statement
Is there a clean way to avoid calling a method on nil in a nested params hash?Ruby - El acceso de hash multidimensional y evitar el acceso no nula objeto
Digamos que intento acceder a un hash de esta manera:
my_hash['key1']['key2']['key3']
Esto es bueno si key1, ke y2 y key3 existen en el hash (es), pero ¿y si, por ejemplo, key1 no existe?
Entonces obtendría NoMethodError: undefined method [] for nil:NilClass
. Y a nadie le gusta eso.
Hasta ahora me encargo de esto haciendo un condicional como:
if my_hash['key1'] && my_hash['key1']['key2']
...
Es éste el caso, ¿hay alguna otra manera Rubiest de hacerlo?
Lo sentimos, la comunidad. Traté de buscar esto y no pude encontrarlo. Cierra si es apropiado. – Nobita
La respuesta aceptada menciona todos los métodos posibles excepto el correcto para Ruby 2.3+: http://ruby-doc.org/core-2.3.1/Hash.html#method-i-dig –