Rails Digest :: UUID v5 (vs) Postgresql uuid-ossp v5 - PullRequest
1 голос
/ 15 марта 2019

При получении с помощью Rails Digest :: UUID и Postgresql uuid-ossp я получаю разные UUID V5.

Rails:

[58] pry(main)> Digest::UUID.uuid_v5('e90bf6ab-f698-4faa-9d0f-810917dea53a', 'e90bf6ab-f698-4faa-9d0f-810917dea53a')
=> "db68e7ad-332a-57a7-9638-a507f76ded93"

Postgresql uuid-ossp:

select uuid_generate_v5('e90bf6ab-f698-4faa-9d0f-810917dea53a', 'e90bf6ab-f698-4faa-9d0f-810917dea53a');
           uuid_generate_v5
--------------------------------------
 6c569b95-a6fe-5553-a6f5-cd871ab30178

В чем причина?Я думал, что оба должны генерировать один и тот же UUID, когда ввод одинаковый, но он разный!

1 Ответ

0 голосов
/ 16 мая 2019

Это не ответ на вопрос о том, почему Rails дает другой результат, но если вы хотите создать UUID v5 в своем коде Ruby, вы можете использовать uuidtools. Возвращает тот же результат, что и PSQL:

  ~ pry
[1] pry(main)> require 'uuidtools'
=> true
[2] pry(main)> UUIDTools::UUID.sha1_create(UUIDTools::UUID.parse('e90bf6ab-f698-4faa-9d0f-810917dea53a'), 'e90bf6ab-f698-4faa-9d0f-810917dea53a')

=> #<UUID:0x3fe09ea60dd8 UUID:6c569b95-a6fe-5553-a6f5-cd871ab30178>
[3] pry(main)>
...