我有一个应用程序,用户可以像这样注册自己的个人网址
- 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