从SQL调用返回以下对象:
#<Health:0x007fc8533f2de8 @type=:diabetic, @value="N", @data_source=nil, @measured_at=nil>
价值可能是&#39; Y&#39;或者&#39; N&#39;并且可以health.value
进行访问。
如何将此值表示为布尔值?
答案 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]