Не понял вашего вопроса. Но из приведенного выше фрагмента я думаю, что вы идете в направлении «не нужно быть таким сложным», по крайней мере, для утверждения case: -)
Представьте, что у вас есть строка "1"
Во-первых, для преобразования из "1" в 1 у вас есть метод to_i. И вы всегда должны to_s конвертировать в String. Если нет, вы по-прежнему заканчиваете методом to_s из простого объекта, который является скорее значением отладки, но все же.
Тогда у вас есть массивы, чтобы вы могли использовать индексы.
words = ["zero", "one", "two", ... ]
так что слова [0] - это «ноль». О, они всегда совпадают. И вход «0», но input.to_i - 0. Вы получили его.
def convert
["zero", "one", "two", ...][self.to_i]
end
И это все.
Теперь вы можете иметь массивы для единиц, подростков, десятков и т. Д. И выполнять операции, необходимые для составления более сложных слов. Лингвистический гем делает именно это, позволяя делать такие вещи, как:
2004.en.numwords
# => "two thousand and four"
"cow".en.quantify( 20_432_123_000_000 )
# => "tens of trillions of cows"
Надеюсь, это было полезно; -)