2010-09-11 6 views
0

je généralement avoir un code qui ressemble à ce qui suit:Ruby: variable locale non définie ou méthode de travail autour

return if foo.nil? 
bar = foo[:bar] || 0 

Le problème avec elles au-dessus est que si foo [: bar] n'existe pas, je reçois une erreur HTTP 500, car une exception NameError est jeté qui ressemble à:

NameError (undefined local variable or method `foo'..) 

Qu'est-ce qu'un travail plus élégant autour?

Répondre

0

Il existe un plugin qui vous simplifiera la tâche, appelé andand. Ça va vous laisser faire quelque chose comme:

bar = foo.andand[:bar] || 0 

Il est censé être un raccourci pour foo && foo[:bar], d'où le nom.

Cela fonctionne également avec les méthodes. En supposant que foo peut avoir une méthode quux, vous pouvez utiliser

foo.andand.quux 
Questions connexes