Кажется, что Вы хотите использовать PIN-код в качестве единственных средств идентификации для пользователей. Осуществимое решение состояло бы в том, чтобы использовать первые пять цифр, чтобы идентифицировать пользователя и добавить четыре цифры как PIN-код.
, Если Вы не хотите хранить PIN, они могут быть вычислены путем применения криптографически безопасного хеша (SHA1 или лучше) к коду пользователя плюс секретный код в масштабе всей системы.
Это один из тех редких случаев, когда Ruby повторная попытка
может пригодиться. Что-то вроде этого:
retries = [3, 5, 10]
begin
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
rescue SomeException # I'm too lazy to look it up
if delay = retries.shift # will be nil if the list is empty
sleep delay
retry # backs up to just after the "begin"
else
raise # with no args re-raises original error
end
end