Ruby integer to boolean
У меня есть поле БД, которое является целым типом, а значения всегда равны 0 или 1. Как я могу получить эквивалентное булевское значение в ruby? так что, когда я делаю следующее, флажок установлен соответствующим образом:
<%= check_box_tag 'resend', @system_config.resend %>
Ответы
Ответ 1
Вы можете использовать метод zero?
. Он возвращает true, если 0. Если вам нужно вернуться назад, вы можете легко отменить его до [email protected]_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
Ответ 2
1 - это ваше единственное истинное значение здесь. Таким образом, вы можете получить значение логической истины с помощью number == 1
.
Ответ 3
У меня была такая же проблема, и я имел дело с этим следующим образом:
def to_boolean(var)
case var
when true,'true',1,'1'
return true
when false, 'false',0,'0'
return false
end
end
Это работает с формами, базами данных и людьми, которые не знают рубина.
Я нашел его полезным, особенно с Rails, поскольку параметры часто передаются/интерпретируются как строки, и я не хочу об этом беспокоиться.