Другой способ получить следующий номер с теми же цифрами:
def next_number_with_same_digits(number)
number.to_s.chars.permutation.map { |e| e.join.to_i }.select { |n| n > number }.min
end
Если вы хотите получить последний номер с теми же цифрами:
def last_number_with_same_digits(number)
number.to_s.chars.permutation.map { |e| e.join.to_i }.select { |n| n < number }.max
end