Мне нужен метод ординализации, который имеет «первый, второй, третий», а не «1-й, 2-й, 3-й» - так вот небольшой фрагмент, который работает до 10 (и возвращается к ординализации Rails, если он не можетнайди его).
class TextOrdinalize
def initialize(value)
@value = value
end
def text_ordinalize
ordinalize_mapping[@value] || @value.ordinalize
end
private
def ordinalize_mapping
[nil, "first", "second", "third", "fourth", "fifth", "sixth", "seventh",
"eighth", "ninth", "tenth" ]
end
end
Вот как это работает:
TextOrdinalize.new(1).text_ordinalize #=> 'first'
TextOrdinalize.new(2).text_ordinalize #=> 'second'
TextOrdinalize.new(0).text_ordinalize #=> '0st'
TextOrdinalize.new(100).text_ordinalize #=> '100th'