ruby整数到布尔值

时间:2010-08-20 20:36:26

标签: ruby-on-rails ruby

我有一个整数类型的DB字段,值总是0或1.我如何获取ruby中的等效布尔值?这样,当我执行以下操作时,复选框设置正确:

<%= check_box_tag 'resend', @system_config.resend %>

4 个答案:

答案 0 :(得分:52)

您可以使用zero?方法。如果为0,则返回true。如果需要向后,则可以轻易地将其否定为!@system_config.resend.zero?。或者你可以扩展Fixnum类,添加一个to_b?方法,因为一切都是动态语言中的开放和可扩展的。

class Integer
  def to_b?
    !self.zero?
  end
end

alt text

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