用什么方法检查:空白? &安培;&安培; !假?

时间:2014-09-15 11:29:18

标签: ruby-on-rails ruby

我正在寻找一种方法(最好只有一种Rails或Ruby方法)来验证变量是否为空但不是false(因为我有一些不应该为空的布尔变量?== true因为他们有价值观。)

说我有四种类型:nil, '', 0, false

我正在寻找一个相当于以下的简单方法:

(var.nil? || var == '') && var !== false

这是我能提出的最简单的方法:

var.blank? && var !== false

如果没有其他办法,那么我想我只需要为此创建一个自定义方法。

2 个答案:

答案 0 :(得分:6)

  

我正在寻找一个相当于以下的简单方法:

var.nil? or var == '' or var == false

您正在寻找的方法是blank?

def foo1(var)
  var.nil? || var == '' || var == false
end

def foo2(var)
  var.blank?
end

foo1(nil) == foo2(nil) # => true
foo1('') == foo2('') # => true
foo1(false) == foo2(false) # => true
foo1(0) == foo2(0) # => true

编辑后

  

我正在寻找一个相当于以下的简单方法:

(var.nil? || var == '') && var !== false

是的,只需制作一个自定义方法。或者,如果你感觉特别邪恶,你可以修补FalseClass#blank?以返回相反的值。

答案 1 :(得分:1)

现在你的问题变得可以理解了,我会回答。

(var.nil? || var == '') && var !== false

可以简化为:

var.to_s.empty?

你不能用一种方法来做,但你可以用两种方法做到。 例如,true[]也会返回{}