Маршрутизация имен пользователей от корневого URL и предотвращение коллизий - PullRequest
0 голосов
/ 03 января 2012

Я хочу сделать так, как это делает твиттер (и многие другие сайты), и дать URL-адресам моих пользователей, например:

http://mysite.com/theirusername

В настоящее время одна из проверок моей модели пользователяпросто запрещает занесенные в черный список имена пользователей из жестко закодированного списка.

Есть ли лучший способ сделать это, чем жестко закодировать список?например, проверить маршруты (пример кода?)

Любые слова мудрости от того, кто управляет таким сайтом, будут оценены!Я уверен, что вы, должно быть, столкнулись со сценарием, в котором вы хотите использовать URL для какой-то новой функции, но кто-то использует его в качестве своего имени пользователя.Это часто возникало, и как можно с этим справиться?Я всегда могу выбрать другое имя, использовать поддомен или попросить пользователя переименовать.Возможно, стоило бы занести в черный список некоторые распространенные английские существительные?Есть другие?

1 Ответ

1 голос
/ 03 января 2012

Используйте это:

get ':id', :to => "users#show"

Тогда вы можете делать такие вещи, как http://mysite.com/theirusername. Внутри действия UsersController#show вам нужно будет использовать User.find_by_username(params[:id]).

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

Вы должны стремиться иметь некоторую функцию внесения в черный список, что достаточно просто сделать со списком слов в вашей модели User, который затем проверяется с помощью validates_exclusion_of.

...