0

我有一个应用程序,用户可以像这样注册自己的个人网址

  • myapp.com/users-personal-url

我想运行我的 rails 配置文件并自动获取已经在使用的 url,并在验证方法中遍历这些以防止用户保留这些 url。例如...

如果在我的路线文件中我有类似的东西

match 'test' => 'courses#test'
resource :users

那么用户应该无法注册“用户”网址或“测试”网址。到目前为止,我发现我可以通过使用来获取 ruby​​ 类中的所有路由rake routes

但是我的弦乐操作技巧让我失望了,因为我是个铁轨菜鸟。基本上我需要对路线进行子串化,将它们放在一个集合中并进行验证检查。指向正确方向或工作代码的指针表示赞赏。谢谢。

4

2 回答 2

0

我认为在 routes.rb 中没有任何快速的 Rails 方式可以做你想做的事情。

您需要在模型中创建自定义验证器

在处理用户生成的 URL 提交的模型中,添加此验证器。

class Whatevermodel < ActiveRecord::Base
  validate :protect_reserved_url, :on => create

  def protect_reserved_url
    reserved_url = ['test', 'users', 'whatever_other_url_you_want_to_protect']
    if reserved_url.include?(url_submission.downcase)
      errors.add(:url_submission, "is an invalid URL")
    end
  end
end
于 2012-08-14T19:20:01.963 回答
0

好吧,简单地获取路线以便您可以匹配它们,这个人有一个很酷的方法,如何在我的 rails 应用程序中获取所有路线?

https://stackoverflow.com/questions/3672554/how-get-all-routes-in-my-rails-application

或者你可以用

Rails.application.routes
于 2012-08-15T03:18:45.573 回答