gpt4 book ai didi

ruby-on-rails-3 - 如何确保用户名不会与现有路由冲突?

转载 作者:行者123 更新时间:2023-12-02 14:22:26 24 4
gpt4 key购买 nike

所以我想在我的网站上有像http://foobar.com/hadees这样的网址这会进入某人的个人资料。但是,在注册用户名时,如何确保他们不会选择与我现有的路由冲突的内容?

我猜我需要获取现有路线的列表,但我不知道该怎么做。

最佳答案

简短的谷歌搜索告诉我:

http://henrik.nyh.se/2008/10/validating-slugs-against-existing-routes-in-rails

在 Rails 3 中,该方法已移至 Rails.application.routes.recognize_path

所以我总结一下:

class User < ActiveRecord::Base
validates_format_of :name, :with => /\A[\w-]+\Z/
validates_uniqueness_of :name
validate :name_is_not_a_route

protected

def name_is_not_a_route
path = Rails.application.routes.recognize_path("/#{name}", :method => :get) rescue nil
errors.add(:name, "conflicts with existing path (/#{name})") if path && !path[:username]
end

end

关于ruby-on-rails-3 - 如何确保用户名不会与现有路由冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com