我有一个整数类型的DB字段,值总是0或1.我如何获取ruby中的等效布尔值?这样,当我执行以下操作时,复选框设置正确:
<%= check_box_tag 'resend', @system_config.resend %>
答案 0 :(得分:52)
您可以使用zero?
方法。如果为0,则返回true。如果需要向后,则可以轻易地将其否定为!@system_config.resend.zero?
。或者你可以扩展Fixnum类,添加一个to_b?
方法,因为一切都是动态语言中的开放和可扩展的。
class Integer
def to_b?
!self.zero?
end
end
Ruby API:http://ruby-doc.org/core/classes/Fixnum.html#M001050
答案 1 :(得分:9)
1是你唯一的真值。因此,您可以使用number == 1
获取布尔值。
答案 2 :(得分:2)
我有同样的问题并以这种方式处理:
def to_boolean(var)
case var
when true,'true',1,'1'
return true
when false, 'false',0,'0'
return false
end
end
这适用于表格,数据库和不了解红宝石的人。 我发现它特别适用于Rails,因为参数通常被传递/解释为字符串,我不想担心这一点。
答案 3 :(得分:1)
在Rails中,还有ActiveModel::Type::Boolean.new.cast(value)
使0
为假,非零为true,[]
为真,{}
为真。请注意,nil
-> nil
。