2012-03-20 13 views
8

¿Existe un modismo Rails/Ruby para comprobar si un enumerable está presente y tiene valores no nil?Idioma de rieles para .present? y .any?

Recibo errores si alguna vez trato de hacer nil.any?, así que siempre tengo que hacer if foo && foo.any?.

Respuesta

9

se puede utilizar el método de try proporcionada por ActiveSupport:

obj.try(:any?) 

Esto se evaluará como nil si obj.nil? o para false si obj es una colección vacía, por lo que en ambos casos se evaluará a un valor Falsy en un contexto booleano.

+0

Sólo una nota que esto requiere ActiveSupport (ya que la pregunta dice "Rieles/Ruby "en lugar de solo Rails). –

+0

@Andrew: Sí, es específico de Rails. –

0

También es posible usar la gema andand:

foo.andand.any? 
+0

Sí, esto también funciona. – chug2k

1

Creo que ahora se puede utilizar el operador de navegación segura:

if foo&.any? 
Cuestiones relacionadas