使用路由进行轨道字符串操作



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

  • myapp.com/users-personal-url

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

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

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

然后,用户应该无法注册"用户"URL 或"测试"URL。 到目前为止,我发现我可以使用 rake routes 来获取 ruby 类中的所有路由

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

我认为

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

您需要在模型中创建自定义验证程序。

在处理用户生成的 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

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

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

或者你可以用

Rails.application.routes

最新更新