Ruby on rails Rails方法将空字符串数组([";,";,…])检测为空

Ruby on rails Rails方法将空字符串数组([";,";,…])检测为空,ruby-on-rails,arrays,string,Ruby On Rails,Arrays,String,是否有rails函数将[“”,“”,…](即仅包含一个或多个空字符串的数组)检测为空 我的要求: [“”].foo?=>true [“”,“”].foo?=>true [“lorem”].foo?=>错误 [“”,“ipsum”].foo?=>错误 我尝试使用array.reject!(&:空?。空?。它起作用了,但这改变了我的阵列。我不想改变我的数组。请帮我找到一个简洁的方法。没有单一的方法,但您可以使用 或者你也可以用它得到相反的结果 OP要求为Rails提供一个解决方案,但我来这里是为了寻

是否有rails函数将
[“”,“”,…]
(即仅包含一个或多个空字符串的数组)检测为空

我的要求:

[“”].foo?
=>true

[“”,“”].foo?
=>true

[“lorem”].foo?
=>错误

[“”,“ipsum”].foo?
=>错误


我尝试使用
array.reject!(&:空?。空?
。它起作用了,但这改变了我的阵列。我不想改变我的数组。请帮我找到一个简洁的方法。

没有单一的方法,但您可以使用

或者你也可以用它得到相反的结果


OP要求为Rails提供一个解决方案,但我来这里是为了寻找一个通用的Ruby解决方案。由于
present?
blank?
都是Rails扩展,所以上述解决方案对我不起作用(除非我引入了我不想要的ActiveSupport)

我是否可以提供一个更简单的解决方案:

[nil, nil].join.empty? # => true
["", nil].join.empty? # => true
["lorem", nil].join.empty? # => false

看看这个答案的一部分,这就是我想要的。谢谢。我想知道
.all?
是否会在大型阵列上更有效(如果它在发现预期值以外的内容时立即返回)?
["", nil].any?(&:present?) # => false
["lorem", ""].any?(&:present?) # => true
[nil, nil].join.empty? # => true
["", nil].join.empty? # => true
["lorem", nil].join.empty? # => false