2012-03-20 6 views
8

Esiste un linguaggio Rails/Ruby per verificare se una enumerable è presente e non ha valori nil?Idiota di rotaie per .present? e .any?

Ottengo errori se mai provo a fare nil.any? quindi devo sempre fare if foo && foo.any?.

risposta

9

è possibile utilizzare il metodo try fornito da ActiveSupport:

obj.try(:any?) 

Questo restituirà nil se obj.nil? o false se obj è un insieme vuoto, quindi in entrambi i casi sarà come risultato un valore falsy in un contesto booleano.

+0

Solo una nota che questo richiede ActiveSupport (dal momento che la domanda ha detto che "Rails/Ruby "piuttosto che solo Rails). –

+0

@Andrew: Sì, è specifico di Rails. –

0

Si potrebbe anche usare la gemma andand:

foo.andand.any? 
+0

Sì, anche questo funziona. – chug2k

1

Credo che ora è possibile utilizzare l'operatore di navigazione sicura:

if foo&.any?