Вы можете просто установить обезьяны TrueClass
и FalseClass
в своем приложении рядом с этой конкретной моделью: любая реализация to_i
для true и false, вероятно, будет одинаковой.
irb(main):004:0> true.to_i
NoMethodError: undefined method `to_i' for true:TrueClass
from (irb):4
irb(main):005:0> class TrueClass
irb(main):006:1> def to_i
irb(main):007:2> 1
irb(main):008:2> end
irb(main):009:1> end
=> nil
irb(main):010:0>
irb(main):011:0* true.to_i
=> 1
Но чтобы избежать мартышек, есть ли какая-то причина, по которой вы не могли просто использовать троичный оператор? Если вам все еще недостаточно СУХОГО, заверните его одним из методов.
irb(main):012:0> true ? 1 : 0
=> 1
irb(main):013:0> false ? 1 : 0
=> 0
Конечно, это работает и с небулевыми переменными:
irb(main):019:0* 1234 ? 1 : 0
=> 1
irb(main):020:0> nil ? 1 : 0
=> 0