是否有一个rails函数来检测["", "", ...]
(即一个只包含空字符串或字符串的数组)为空
我的要求:
[""].foo?
=>真
["", ""].foo?
=>真
["lorem"].foo?
=>假
["", "ipsum"].foo?
=>假
我尝试使用array.reject!(&:empty?).blank?
。它工作,但这改变了我的阵列。我不希望我的阵列被改变。请帮我找一个紧凑的方法。
答案 0 :(得分:8)
没有一种方法,但您可以使用.all?
。
["", nil].all?(&:blank?) # => true
["ipsum", ""].all?(&:blank?) # => false
或者你可以使用.any?
获得相反的结果。
["", nil].any?(&:present?) # => false
["lorem", ""].any?(&:present?) # => true
答案 1 :(得分:0)
OP一直在寻找Rails的解决方案,但我来这里时是在寻找通用的Ruby解决方案。由于present?
和blank?
都是Rails扩展,因此上述解决方案对我不起作用(除非我引入了我不想要的ActiveSupport)。
我可以提供一个更简单的解决方案:
[nil, nil].join.empty? # => true
["", nil].join.empty? # => true
["lorem", nil].join.empty? # => false