如何将对象中的值表示为布尔值

时间:2017-06-08 15:15:06

标签: ruby-on-rails ruby

从SQL调用返回以下对象:

#<Health:0x007fc8533f2de8 @type=:diabetic, @value="N", @data_source=nil, @measured_at=nil>

价值可能是&#39; Y&#39;或者&#39; N&#39;并且可以health.value进行访问。

如何将此值表示为布尔值?

3 个答案:

答案 0 :(得分:4)

如果Health是模型,您可以执行以下操作:

def diabetic?
  value.upcase == 'Y'
end

在模型的文件中。

另一种具有不同功能名称(见注释)的通用方法是:

def value?
  value.upcase == 'Y'
end

答案 1 :(得分:1)

您的问题并不清楚,但您似乎正在使用ActiveRecord。

如果您能够更改数据库的结构,我建议您这样做。将布尔值存储为字符串不是一个好习惯。

boolean列类型将存储本机布尔值if the database supports it, and will translate if not。 ActiveRecord会自动为模型添加谓词方法。

因此,如果您有一个名为value的布尔列,那么还会有一个名为value?的方法返回true或false。 “Automagical ?-methods for boolean attributes in ActiveRecord”是另一个例子。

答案 2 :(得分:-1)

{"Y" => true, "N" => false}[health.value.upcase]