Как я понимаю, UUID должны быть не случайными, а основанными на входной строке.Это известно как UUID версии 3 и версии 5.Эти версии отличаются используемой функцией хеширования: MD5 против SHA1.См. rfc4122, раздел 4.3 .
Если вы не против включить зависимость Activesupport в ваш проект (это довольно большой гем, но популярный и включенный в Rails), тогда вы можете использовать его uuid_v3
и uuid_v5
методы .
require "active_support/core_ext/digest/uuid"
puts Digest::UUID.uuid_v3("ae279f4c-6327-47c6-b53c-05a3f10dd0c6", "bar")
puts Digest::UUID.uuid_v5("ae279f4c-6327-47c6-b53c-05a3f10dd0c6", "bar")
Вывод (обратите внимание, что при каждом запуске он одинаков, в отличие от случайных UUID):
fab2e5c9-bf64-39d4-bc17-e72ccdb013aa
15c252d7-fd16-52de-aac2-223a58aa6ea9