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 code> nil p>
Je reçois des erreurs si j'essaie jamais de faire nil.any? code> donc je dois toujours faire si foo && foo.any? p>. p>.
3 Réponses :
Vous pouvez utiliser la méthode Ceci évaluera à essayer code> fournie par ActiveSupport: nil code> si obj.nil ? code> ou à false code> si obj code> est une collection vide, donc dans les deux cas, il évaluera une valeur de fausseté dans un contexte booléen. P> < / p>
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.
Vous pouvez également utiliser l'andand gem:
Je pense que vous pouvez maintenant utiliser l'opérateur de navigation sécurisé:
if foo&.any?
Juste pour élaborer à ce sujet, l'opérateur de navigation sécuritaire est disponible dans Ruby> = 2.3