ruby整数到布尔值

Raf*_*ael 26 ruby ruby-on-rails

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

<%= check_box_tag 'resend', @system_config.resend %>
Run Code Online (Sandbox Code Playgroud)

Jar*_*yer 52

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

class Integer
  def to_b?
    !self.zero?
  end
end
Run Code Online (Sandbox Code Playgroud)

替代文字

Ruby API:http://ruby-doc.org/core/classes/Fixnum.html#M001050

  • 你是否故意让你的命令提示BSoD颜色? (6认同)
  • 只要注意`nonzero?` - 它返回真值和假值,但不是'true`为'零?`确实(它们在不同的类中定义,见http://ruby-doc.org/core-1.9. 3/Fixnum.html#method-i-zero-3F与http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-nonzero-3F (3认同)
  • 请注意,还有[`nonzero?`](http://ruby-doc.org/core-1.9.3/Numeric.html#method-i-nonzero-3F),它们的读数可能比`!zero?`更好. (2认同)
  • 我强烈建议不要在内置类中添加函数.我来自一个更多的javascript世界,那里有多次回归咬人,但不仅如此:阅读代码的每个人都会知道`非零?`函数是什么,但不知道什么是to_b?是! (2认同)

Chu*_*uck 9

1是你唯一的真值.所以你可以得到布尔值number == 1.