Rails成语为.present?和.any?

时间:2012-03-20 18:43:06

标签: ruby-on-rails ruby

是否有Rails / Ruby习惯用于检查枚举是否同时存在并且具有非nil值?

如果我尝试nil.any?,我会收到错误,所以我总是要做if foo && foo.any?

3 个答案:

答案 0 :(得分:9)

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

obj.try(:any?)

如果nilobj.nil?,如果false是空集合,则评估为obj,因此在这两种情况下,它将评估为布尔值中的虚假值上下文。

答案 1 :(得分:1)

我相信您现在可以使用安全导航操作符:

if foo&.any?

答案 2 :(得分:0)

你也可以使用andand gem:

foo.andand.any?