用于检测空字符串数组的Rails方法(["","",...])为空

时间:2016-06-11 17:18:46

标签: ruby-on-rails arrays string

是否有一个rails函数来检测["", "", ...](即一个只包含空字符串或字符串的数组)为空

我的要求:

[""].foo? =>真

["", ""].foo? =>真

["lorem"].foo? =>假

["", "ipsum"].foo? =>假

我尝试使用array.reject!(&:empty?).blank?。它工作,但这改变了我的阵列。我不希望我的阵列被改变。请帮我找一个紧凑的方法。

2 个答案:

答案 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