2012-03-20 10 views
8

Czy istnieje idiom Rails/Ruby do sprawdzania, czy przeliczalne jest obecne i ma wartości inne niż nil?idiom szyn dla .present? i jakikolwiek?

Otrzymuję błędy, jeśli kiedykolwiek spróbuję zrobić nil.any?, więc zawsze muszę zrobić if foo && foo.any?.

Odpowiedz

9

Można użyć metody try dostarczone przez ActiveSupport:

obj.try(:any?) 

Ten oceni do nil jeśli obj.nil? lub false jeśli obj jest pusty zbiór, więc w obu przypadkach będzie to ocenić na wartość falsy w kontekst boolowski.

+0

Tylko uwaga, że ​​wymaga to ActiveSupport (ponieważ kwestia powiedział: „Rails/Ruby ", a nie tylko Rails). –

+0

@Andrew: Tak, jest to specyficzne dla Railsów. –

0

Można również użyć andand GEM:

foo.andand.any? 
+0

Tak, to też działa. – chug2k

1

Wierzę, że można teraz używać bezpiecznego operatora nawigacja:

if foo&.any?