Вы можете сохранить результат FFaker::InternetSE.login_user_name
и проверить, находится ли размер сгенерированной строки между минимальной и максимальной длиной, которая вам нужна, если это так, верните ее, в противном случае вызовите функцию снова:
require 'ffaker'
def login_user_name(min, max)
raise 'max can not be minor than min' if min > max
username = FFaker::InternetSE.login_user_name
username.size.between?(min, max) ? username : login_user_name(min, max)
end
p login_user_name(8, 9) # christian
p login_user_name(9, 8) # `login_user_name': max can not be minor than min (RuntimeError)