如何确保用户名不会与现有路由冲突?

2024-04-06

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

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


简短的谷歌搜索给了我:

http://henrik.nyh.se/2008/10/validating-slugs-against-existing-routes-in-rails 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确保用户名不会与现有路由冲突? 的相关文章

  • Angular刷新页面重复url中的页面

    我是一名 Angular 新手 正在构建一个简单的寻呼机 我设置了路由器 以便空 URL 重定向到仪表板组件 因此localhost 4200会自动路由到localhost 4200 dashboard完美的 但是 如果我单击刷新按钮 它会
  • Rails 命名空间与嵌套资源

    假设我的应用程序有两个模型 Foo 和 Bar Foo 可选地属于 Bar 现在我可以查看单个 Foo 或者搜索特定的 Foo FoosController 会处理所有这些 我的网址是这样的 foos 1 and foos new 有时我想
  • 黄瓜和 Rspec

    任何人都可以向我推荐黄瓜和 rspec 教程 rails 3 的好来源 简单示例 吗 Edit 实际上我正在寻找带有很好示例的免费在线资源 我觉得R规格书 http www pragprog com titles achbd the rsp
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • Rails - 使用delayed_job异步发送所有电子邮件

    我在用着延迟作业 https github com collectiveidea delayed job我对此非常满意 尤其是workless https github com lostboy workless扩大 但我想这样设置ALL我的
  • 即使 Braintree 中出现错误, result.credit_card_verification 也会返回 nil

    我正在使用 Braintree 进行付款处理 并且我正在尝试获取处理器响应代码 https www braintreepayments com docs ruby reference processor responses来自 Braint
  • 在 Akka 中配置嵌套 Router

    我有一些嵌套的路由器 应创建它FromConfig 我想要的是这样的 test akka actor deployment worker router round robin nr of instances 5 slave router b
  • 根据路由隐藏 ng-view DOM 之外的元素

    问题 如何将 登录 视图 路线添加到我的角度应用程序中 隐藏位于ng view DOM 情况 在我的 Angular 页面中 左侧有一个导航树视图 中间有一个主视图 div div class col sm 3 div div div di
  • 防止语言环境文件中的 HTML 字符实体被 Rails3 xss 保护破坏

    我们正在构建一个应用程序 这是我们第一个使用 Rails 3 的应用程序 并且我们必须从一开始就构建 I18n 作为完美主义者 我们希望在我们的视图中使用真正的排版 破折号 卷曲引号 省略号等 这意味着在我们的 locales xx yml
  • Rails 3.1 和 Asset Pipeline:使用 Capistrano 进行部署时遇到的问题

    我刚刚从 Ruby on Rails 3 0 10 切换到 3 1 0 我想使用 Capistrano gem 部署我的资产文件 我的本地计算机是运行 Snow Leopard 的 MacO 我的远程计算机运行的是 Ubuntu 10 04
  • 如何从模型调用辅助方法?

    我使用 MongoDB 作为我的 Rails 应用程序中的数据库和 MongoID gem 我想从模型中调用辅助方法after create回调方法 这怎么可能 我的模型代码是 class Department include Applic
  • 我可以更改 Route-Model-Binding 的解析逻辑以始终小写字符串键吗?

    我在 Laravel 5 7 项目中使用 UUID 键 并且效果非常好 当通过路由从数据库请求项目时 将查找键并将其作为字符串进行比较 当请求发送大写的 uuid 字符串时 路由模型绑定将找不到模型 因为 Laravel 的 UUID 字符
  • 我们能否知道回形针下载何时完成?

    我有一个应用程序 我需要知道用户的 Rails Paperclip 文件下载时间complete 我的应用程序设置为与 Amazon S3 交互 当用户收到完整的文件时 我需要运行 JavaScript 函数 我怎样才能做到这一点 跟踪天气
  • Rails 查询返回属于任何城市和不属于任何城市的用户

    I have Many to Many Associations两个表之间 对于前用户和城市 users id name 1 Bob 2 Jon 3 Tom 4 Gary 5 Hary cities id name 1 London 2 N
  • 在私有控制器方法中返回redirect_to

    前言 我正在使用设备进行身份验证 我试图阻止未经授权的用户查看 编辑或更新其他用户的信息 我最关心的是用户将 DOM 中的表单修改为另一个用户的 ID 填写表单 然后单击更新 我已经专门阅读过 像下面这样的东西应该有效 但事实并非如此 SO
  • 创建包罗万象的路由

    我在网上找到了几个在 ASP NET MVC 中创建包罗万象的路由的示例 尤其是在 StackOverflow 上 但这似乎在 MVC4 中对我不起作用 public static void RegisterRoutes RouteColl
  • 在 Rails 3 中选择性地关闭 Devise 的 Flash 通知

    Devise 身份验证框架在各处都使用 Flash 通知 这使得与应用程序集成变得很容易 但有时会导致用户体验不佳 我想知道有什么简单的方法可以有选择地关闭 Rails 3 应用程序中的一些 Devise flash 通知 特别是 我想摆脱
  • Asp.net core默认路由

    简化版Startup code public void ConfigureServices IServiceCollection services services AddMvc public void Configure IApplica
  • 获取嵌套参数

    我有一个带有嵌套参数的表单 在下面的示例中 如何获取控制器中的 amount whole 值 Parameters utf8 gt authenticity token gt KCmBI6RLh0LdUsM2r5H1vhNykS1IXecF
  • Rails 资源单数还是复数?

    我有一条搜索路线 我想将其设为单数 但是当我指定单数路线时 它仍然会生成复数控制器路线 这是应该的样子吗 resource search Gives me search POST search format action gt create

随机推荐

  • Java Mockito-如何模拟参数数量不确定的方法

    我尝试使用 Mockito 来模拟getDeclaredMethod 爪哇的 但该方法的参数是不确定的 如何模拟这样的方法 public Method getDeclaredMethod String name Class paramete
  • 重音字符的问题

    I have a search box on my site and i need to replace all the Spanish characters that user types in to equivalent English
  • 使用计时器和游戏循环

    我正在构建一个简单的控制台游戏 玩家会移动当按键按下时 并且有移动的敌人自动 每种类型的敌人在 X 毫秒内移动一次 据我了解我应该使用timer 但我真的不知道如何在游戏循环中做到这一点 尚未构建 因为我不知道如何使用计时器 但它应该是wh
  • jQuery ajax 回调类成员? [复制]

    这个问题在这里已经有答案了 可能的重复 有没有办法让 JQuery ajax 成功函数访问它所包含的对象 https stackoverflow com questions 5378622 is there a way for a jque
  • 使用 GDI+ 创建透明背景的图像?

    我正在尝试创建一个具有透明背景的图像以显示在网页上 我尝试了几种技术 但背景总是黑色的 如何创建一个透明图像 然后在其上绘制一些线条 Call Graphics Clear Color Transparent 好 清晰图像 不要忘记使用具有
  • JTree 在应用程序启动时添加节点

    我想使用文件浏览器创建文本编辑器 因此当我启动应用程序时 我希望我的程序在 JTree 上添加节点 以便它向我显示所有文件和文件夹 例如 我的文档 文件夹中的所有文件和文件夹 并让我能够访问这些文件和文件夹 尤其是文件夹 我试图弄清楚安德鲁
  • 具有 contenteditable 的 onChange 事件[重复]

    这个问题在这里已经有答案了 代码如下 text span blah blah span text onChange 事件不起作用 至少在火狐浏览器中 我不想使用文本区域 输入标签 因为必须可以仅更改文本中的特定单词 并且必须内联显示 而不是
  • 使用 SQL 代理运行 SSIS 包时出现问题 - 失败并显示“DTSER_FAILURE(1)”

    我有一个存储在 MSDB 数据库中的 SSIS 包 当我执行它时它工作正常 它将在 SA 帐户下运行或使用 Windows 安全性 我想安排此作业与 SQL Agent 一起运行 但是当我这样做时 我收到一个奇怪的错误 并且我尝试的任何配置
  • Discord Webhook 消息无法发送

    所以我有一段不久前有人发布的代码 到现在已经完美运行一年了 它采用谷歌表单答案并将其作为网络钩子发布到不和谐频道 现在从昨天开始就不再起作用了 脚本没有任何改变 function onSubmit e var form FormApp ge
  • 为什么我无法导入 folium python 包?

    我已经 pip 安装了 folium 当我在主目录中工作时尝试导入它时 出现此错误 ImportError Traceback most recent call last
  • 使用程序员 dvorak 键盘布局(移位数字)在 xmonad 中切换工作区

    好吧 我实际上并没有使用德沃夏克 但是Neo2 http neo layout org 但由于我使用的是矩阵式键盘 真正符合人体工程学 http www trulyergonomic com 我也改变了数字 因此我的这个结构xmonad h
  • MSVC 直接构造函数调用扩展

    In 这个回应 https stackoverflow com a 23274182 420683 没有手套的 https stackoverflow com users 1902313 tloveless指出可以在 MSVC 中使用thi
  • 停止 Safari 4 窗口中的按键事件冒泡

    在 Safari 4 窗口中 似乎无法阻止某些关键事件在 Javascript 中冒泡到浏览器 This question https stackoverflow com questions 1492080 disable f5 key i
  • MediaCodec 将 WAV 转换为 AMR 的文件无法播放

    我在用MediaCodec转换一个 wav文件至 amr 我使用以下代码进行输入和获取编码缓冲区 我得到了编码文件 但它无法播放 我的输入是正确的 因为我能够在 Audacity 中播放该文件 我在用EncodeDecodeTest jav
  • ruby 中对象引用的类型

    我是 Ruby 新手 目前正在尝试使用 Ruby 书中的一些示例作为指导 class Account attr accessor balance def initialize balance balance balance end end
  • 如何在领域层使用工作单元

    我正在尝试在 我的服务 类中使用工作单元模式 我有我的 CompanyService 课程 public class CompanyService ICompanyService private readonly ICompanyRepos
  • Html-如何防止连续空格被折叠

    我正在使用 html 模板以编程方式发送电子邮件 我对 html 一无所知 但我刚刚了解到它会折叠连续的空白字符 这会破坏我的格式 我正在通过电子邮件发送数字表 我怎么解决这个问题 只需使用 pre 像这样标记 pre This is so
  • mp4parser 从 Android Studio 在设备上运行,但在手动安装 APK 时崩溃

    我在用着mp4parser合并videos 该应用程序在运行时运行完美A S 但如果我手动安装应用程序 传输并运行APK 或者如果我运行它TestFairy 应用程序崩溃 当我更新我的Target Sdk to Lollipop 我已经添加
  • SQLite3 UNIQUE 约束失败错误

    我正在尝试创建一个数据库 允许用户创建 待办事项 列表并在其中填充要完成的项目 但是 当将数据插入表中时 它给了我一个 UNIQUE 约束失败错误 我不知道如何解决它 这是我用于创建数据库和插入数据的代码 CREATE TABLE user
  • 如何确保用户名不会与现有路由冲突?

    所以我想在我的网站上有网址 例如http foobar com hadees http foobar com hadees这会进入某人的个人资料 但是 在注册用户名时 如何确保他们不会选择与我现有的路由冲突的内容 我猜我需要获取现有路线的列