Как создать уникальный идентификатор для пользователей для целей отслеживания? - PullRequest
0 голосов
/ 03 марта 2012

Я хотел бы иметь возможность добавлять пользовательские реферальные параметры на все ссылки приглашения, отправленные с моего сайта ... пример:

http://site.com/invited_by?=ajraux

Как создать кодчто коротко как "ajraux" для всех пользователей на моем сайте?Это должно быть поле в базе данных?Можно ли его создать на месте?Как веб-компании делают это?

Спасибо

Ответы [ 3 ]

4 голосов
/ 03 марта 2012

Вы можете создавать случайные числа и кодировать их в base-36, что-то вроде этого:

rand(1e12).to_s(36)

Сгенерируйте по одному для каждого пользователя при первом использовании и сохраните его вместе с пользователем.Добавьте уникальное ограничение на ваш случайный токен (как в вашей модели, так и в базе данных) и сгенерируйте новый, если вы получите нарушение уникальности.Возможно, вы захотите записать предупреждение где-нибудь, что вы увидите его, если вам нужно будет попробовать, скажем, более пяти раз, чтобы получить уникальное значение;если вы начнете получать много предупреждений, увеличьте значение 1e12 до 1e15 (или выше).

Это даст вам токен случайного вида, прикрепленный к каждому пользователю, токены будут безопасны для URLони генерируются быстро и легко, вы не должны получать столько коллизий, и будет легко вернуться от токена к пользователю.

0 голосов
/ 11 ноября 2012

Как сказал cjapes, использование ID не является хорошим решением, а mu слишком короток, и ответ в большинстве случаев хорош. Однако, если у вас есть сайт, который предлагает уникальные URL-адреса, как about.me , тогда у каждого пользователя будет постоянный вид столбца, в котором хранится его уникальный URL-адрес. Вы можете просто использовать значение из этого столбца при создании URL.

На приемном конце вы можете сделать:

@referring_friend = User.find_by_permalink(params[:permalink])
0 голосов
/ 03 марта 2012

Один из способов сделать это - использовать уникальный идентификатор пользователя, скажем «id», который находится в базе данных, но это также опасно, потому что вы слишком много раскрываете о своей базе данных.

Таким образом, вы можете добавить поворот в предыдущую ситуацию, а также зашифровать и расшифровать идентификатор, чтобы, когда он находится в URL-адресе, он был зашифрован, а затем, когда вы его получили, вы могли его расшифровать и использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...