Ruby on rails 跟踪保留的URL(以启用每个用户的URL)

Ruby on rails 跟踪保留的URL(以启用每个用户的URL),ruby-on-rails,Ruby On Rails,在my上,每个用户都在http://rapgenius.com/USERNAME 因为这些收藏夹页面占用根命名空间,所以我必须确保没有人使用我已经用于其他用途的用户名。例如: /songs /歌词 /users /posts 在创建用户时,如何查找优先级高于/username路由(位于routes.rb底部)的所有顶级路径,以防止用户使用这些保留名称?也许您可以利用 但它看起来像是在不匹配的情况下提升的,所以您可能必须为它编写一个包装器,以便在这些情况下拯救false 我还刚刚意识到,您还必

在my上,每个用户都在
http://rapgenius.com/USERNAME

因为这些收藏夹页面占用根命名空间,所以我必须确保没有人使用我已经用于其他用途的用户名。例如:

  • /songs
  • /歌词
  • /users
  • /posts

在创建用户时,如何查找优先级高于
/username
路由(位于
routes.rb
底部)的所有顶级路径,以防止用户使用这些保留名称?

也许您可以利用

但它看起来像是在不匹配的情况下提升的,所以您可能必须为它编写一个包装器,以便在这些情况下拯救false


我还刚刚意识到,您还必须检查任何匹配,以确保它不是您希望它匹配的用户路径…

为什么不让事情变得更简单,只需执行以下操作:

def validate
  reserved = %w(songs lyrics users posts)
  errors.add(:username, 'is not allowed') if reserved.include?(username)
end
两个反问题:

1) 为什么每个用户的“收藏夹”页面都需要位于URI树的根目录中


2) 您目前如何处理两个用户选择同一用户名的情况?

如果您想引入一个插件来实现这一点,一个有用的插件是非常有用的

从他们的网站

FriendlyId是RubyonRails的Sluging和permalink插件的“瑞士陆军推土机”。它允许您创建漂亮的URL并使用人性化的字符串,就像它们是ActiveRecord模型的数字ID一样


对您来说更重要的是,它支持确保生成的URL与您的控制器/路径不匹配

,所以请在添加新资源时手动更新此列表?可能是这里最简单的麻烦了,我想我不知道你的应用程序,但实际上你多久会添加一次新路线?此外,上面的代码非常清楚地揭示了它的意图,并且与视图分离。最后,Rails 3路由器是另一种动物,因此,现在用于反思路由的任何聪明代码都已成熟,可供将来使用。