Хэш, основанный на времени, на самом деле не «гарантирован», чтобы быть уникальным.Использование некоторого типа хэша - это просто способ создать дайджест из больших исходных данных.Поскольку все данные затем могут быть описаны в 128 битах (с использованием md5), то возможно столкновение с хеш-коллизиями.
Команда validates: uniquness выполнит запрос, чтобы определить, использовалось ли ранее значение поля.Вы можете использовать это, но это не должно быть вашим единственным решением.Если поле предназначено быть уникальным, вы должны поместить уникальный индекс в столбец в базе данных.Если вы полагаетесь только на проверку рельсов, вы рискуете получить состояние гонки при вставке данных в таблицу.Я могу обойти проверку, но другая запись могла бы также пройти проверку, и оба оказались бы в таблице.
Вы генерируете значение или это ввод пользователя?