Обычно мы используем сторонний инструмент. Но в некоторых ситуациях это не было применимо, таким образом, я создал собственное решение, которое было довольно стандартным:
Преобразовать либо в другое, либо:
val1.to_s == val2 # returns true
Или:
val1 == val2.to_i # returns true
Хотя ruby динамически типизирован (тип известен во время выполнения), он также является строго типизированный (тип не имеет неявного преобразования типа)
Предполагая, что вы не знаете, будет ли один из них нулем, буквенно-цифровой строкой или пустой строкой, я предлагаю преобразовать обе стороны в строки и затем сравнить.
val1.to_str == val2.to_str => true
nil.to_str == "".to_str => true
"ab123".to_str == 123.to_str => false