Ruby on rails ActiveRecord-检查值是否为null、0或1
我使用的是MySql,有TINYINT类型的“MyColumn”列。我需要在页面上显示它的状态。所以我创建了一个helper方法Ruby on rails ActiveRecord-检查值是否为null、0或1,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我使用的是MySql,有TINYINT类型的“MyColumn”列。我需要在页面上显示它的状态。所以我创建了一个helper方法 Rails 3.2.2, Ruby 1.9.2 底线是它也可以为空或为零。所以它不能像我需要的那样工作。它不断返回false 0或true 1,但决不返回空白或nil,即使它应该这样做。 我做错了什么?Acase使用==进行比较,这相当于: module MyControllerHelper def result(a) case a when
Rails 3.2.2, Ruby 1.9.2
底线是它也可以为空或为零。所以它不能像我需要的那样工作。它不断返回false 0
或true 1
,但决不返回空白或nil
,即使它应该这样做。
我做错了什么?A
case
使用==
进行比较,这相当于:
module MyControllerHelper
def result(a)
case a
when false then 'false 0'
when true then 'true 1'
when blank? then 'blank or nil'
end
end
end
Rails向对象添加一个blank?
方法:
因此,您可以在任何地方调用blank?
,即使没有指定的接收者:始终会有一个self
,它始终是一个对象。现在您应该看到when blank?
,虽然在语法上是有效的,但毫无意义:它不调用a.blank?
,如果返回真值,它只检查self.blank?==一个
,不管自己是什么
为此,您最好使用显式的if/else
:
def blank?
respond_to?(:empty?) ? empty? : !self
end
案例
使用==
进行比较,因此相当于:
module MyControllerHelper
def result(a)
case a
when false then 'false 0'
when true then 'true 1'
when blank? then 'blank or nil'
end
end
end
Rails向对象添加一个blank?
方法:
因此,您可以在任何地方调用blank?
,即使没有指定的接收者:始终会有一个self
,它始终是一个对象。现在您应该看到when blank?
,虽然在语法上是有效的,但毫无意义:它不调用a.blank?
,如果返回真值,它只检查self.blank?==一个
,不管自己是什么
为此,您最好使用显式的if/else
:
def blank?
respond_to?(:empty?) ? empty? : !self
end