2012-03-20 18 views
8

是否有Rails/Ruby成語來檢查一個枚舉是否存在並且具有非nil值?.present的Rails成語?和.any?

我得到的錯誤,如果我曾嘗試做nil.any?,所以我總是必須做if foo && foo.any?

回答

9

您可以使用的ActiveSupport提供的try方法:

obj.try(:any?) 

這將如果obj.nil?false評估爲nil如果obj是空集,所以在這兩種情況下,將評估在一個falsy值一個布爾上下文。

+0

剛一說明,這需要的ActiveSupport(自提說:「Rails的/ Ruby「而不僅僅是Rails)。 – 2012-03-20 19:27:02

+0

@Andrew:是的,它是Rails特有的。 – 2012-03-20 19:27:24

0

您也可以使用andand寶石:

foo.andand.any? 
+0

是的,這也適用。 – chug2k 2012-03-20 23:06:46

1

我相信你現在可以使用安全導航操作:

if foo&.any?