Вот однострочник, но он куда как хуже читается. Не ruby-way. Поэтому я и привел более развернутый вариант - он легче для обзора, понимания, для адаптации на другие языки.
def number_with_noun(number, nouns)
"#{number} #{nouns[number%10 == 1 && number%100 != 11 ? 0 : (2..4).include?(number%10) && !(12..14).include?(number%100) ? 1 : 2]}"
end