Ваша функция возвращает выражение while, которое всегда равно nil.Вместо этого вы должны вернуть число:
def random_key(products)
rand_key = rand(900) + 100
while products.has_key?(rand_key)
rand_key = rand(900) + 100
end
rand_key
end
Обратите внимание, что вы можете удалить дублирование, поместив «while» после генерации ключа:
def random_key(products)
begin
rand_key = rand(900) + 100
end while products.has_key?(rand_key)
rand_key
end
И вы можете опустить begin end
для одноговыражение
def random_key(products)
rand_key = rand(900) + 100 while products.has_key?(rand_key)
rand_key
end