在我的rap lyrics explanation website上,每个用户都在http://rapgenius.com/USERNAME
因为这些收藏页面占据了根名称空间,所以我必须确保没有人使用我已经用于其他内容的用户名。 E.g:
/songs
/lyrics
/users
/posts
如何在用户创建时查找优先级高于/username
路径(位于routes.rb
底部)的所有顶级路径,以便我可以阻止用户访问拿这些保留的名字?
答案 0 :(得分:2)
为什么不让自己更容易,只做:
def validate
reserved = %w(songs lyrics users posts)
errors.add(:username, 'is not allowed') if reserved.include?(username)
end
答案 1 :(得分:1)
如果你想插入一个插件来执行此操作,有用的插件是friendlyid
从他们的网站
FriendlyId是用于Ruby on Rails的sluge和永久链接插件的“瑞士军队推土机”。它允许您创建漂亮的URL并使用人性化的字符串,就像它们是ActiveRecord模型的数字ID一样。
更重要的是,它支持确保生成的网址与控制器/路径不匹配
答案 2 :(得分:0)
答案 3 :(得分:0)
两个反问题:
1)为什么每个用户的“收藏夹”页面都需要存在于URI树的根目录中?
2)您目前如何处理两个用户选择相同用户名的情况?