8
votes

Rails idiom pour .present? et n'importe quel?

Y a-t-il un idiome Rails / Ruby pour vérifier si une énumérable est à la fois présente et possède des valeurs non nil

Je reçois des erreurs si j'essaie jamais de faire nil.any? donc je dois toujours faire si foo && foo.any? . .


0 commentaires

3 Réponses :


11
votes

Vous pouvez utiliser la méthode essayer fournie par ActiveSupport: xxx

Ceci évaluera à nil si obj.nil ? ou à false si obj est une collection vide, donc dans les deux cas, il évaluera une valeur de fausseté dans un contexte booléen. < / p>


2 commentaires

Juste une note que cela nécessite ActiveSupport (puisque la question a dit "rails / rubis" plutôt que de simples rails).


@Andrew: Oui, c'est spécifique aux rails.



0
votes

Vous pouvez également utiliser l'andand gem: xxx


0 commentaires

2
votes

Je pense que vous pouvez maintenant utiliser l'opérateur de navigation sécurisé:

if foo&.any?


1 commentaires

Juste pour élaborer à ce sujet, l'opérateur de navigation sécuritaire est disponible dans Ruby> = 2.3