Как я могу назначить таблице пользователей случайное число от 1 до 9, не сохраняя его в базе данных (чтобы вспомнить его позже).

Есть ли способ хешировать их user_id для возврата числа между диапазоном (а затем получать одно и то же число для этого пользователя каждый раз, когда эта функция будет вызвана).

1
Hopstream 28 Дек 2013 в 22:23

2 ответа

Лучший ответ

Я знаю, что следующий способ не является оптимальным, но он работает и гарантированно возвращает the same случайное число от 1 до 9, которое будет уникальным для каждого пользователя, т.е. вам не нужно хранить его в своем база данных:

require 'digest/md5'

def unique_number_for(user)
  hash = (Digest::MD5.new << user.id.to_s).to_s
  hash.split("").map(&:to_i).detect {|a| a > 0}
end
2
Stoic 28 Дек 2013 в 18:41

Очевидное решение:

id.to_s[-1,1]

-3
Flexo 11 Фев 2014 в 20:50