从根URL路由用户名并防止冲突

时间:2012-01-02 22:09:47

标签: ruby-on-rails ruby-on-rails-3 routes url-scheme

我想像twitter.com一样(以及许多其他网站都这样做),并为我的用户提供以下网址:

http://mysite.com/theirusername

目前,我的一个用户模型验证只是从硬编码列表中拒绝列入黑名单的用户名。

有没有比硬编码列表更好的方法呢?例如检查路线(代码示例?)

任何经营此类网站的人的智慧都会受到重视!我确定你必须遇到想要使用某个新功能的URL的场景,但是有人正在使用它作为他们的用户名。有没有经常出现,有什么方法可以处理它?您可以随时选择其他名称,使用子域名,或者让用户重命名。也许将一些常用英语名词列入黑名单是值得的吗?还有其他人吗?

1 个答案:

答案 0 :(得分:1)

使用此:

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

然后你可以做http://mysite.com/theirusername之类的事情。在UsersController#show操作中,您需要使用User.find_by_username(params[:id])

如果某人已经在使用您希望将来使用的用户名,请向他们发送电子邮件,告知他们这些更改(您的条款和条件中也应该有这样的效果)并给他们一段时间是时候做出改变了。

您的目标应该是拥有一些黑名单功能,这很容易与User模型中的单词列表一起使用,然后使用validates_exclusion_of进行检查。