2016-06-05 18 views
0

Когда будет запущен мой новый сайт, будет очень мало пользователей. В настоящее время страницей профиля пользователя является/users /: id, поэтому на ранних этапах это будет/users/6 и т. Д. Я не хочу, чтобы другие знали, сколько пользователей имеет сайт. Я думаю, что длинный идентификатор (например, uuid) с цифрами и буквами выглядит уродливым, поэтому я бы предпочел, чтобы это были цифры.Как обфускать идентификатор пользователя со случайным числом, используя friendly_id

Как использовать символ friendly_id для создания случайного числа, которое также будет уникальным? Это также мой первый веб-сайт, поэтому любые советы по «лучшей практике», касающиеся обфускации идентификатора пользователя, были бы полезными. Благодарю.

ответ

0

Это пример из существующего проекта:

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :email, use: [:slugged, :finders] 

    def normalize_friendly_id(email) 
    Digest::MD5.hexdigest(email) 
    end 

    def should_generate_new_friendly_id? 
    slug.blank? 
    end 
end 

Вы можете изменить MD5 для случайного числа, используя что-то вроде этого:

SecureRandom.random_number(1_000_000_000) 
+0

Как я могу убедиться, что случайное число является уникальным и как обрабатывать, если сгенерированное случайное число было использовано? – user4584963

+0

Я считаю, что 'FriendlyId' обрабатывает это для вас. Он отказывается от uuid, когда он не может создать уникальный идентификатор. Вы можете добавить 'validates: slug, uniqueiquity: true' для объяснения. – Bartosz