相关疑难解决方法(0)

Rails验证以确保用户名不会与现有路由冲突?

我想确保用户无法创建与我现有路由冲突的用户名.我也希望能够拒绝我可能定义的未来路线.我想要完成这样的事情:

在模型中:

class User < ActiveRecord::Base
  @@invalid_usernames = %w()

  cattr_accessor :invalid_usernames

  validates :username, :exclusion { :in => @@invalid_usernames }
end
Run Code Online (Sandbox Code Playgroud)

在一些初始化程序中:

User.invalid_usernames += Rails.application.routes.routes.map(&:path).join("\n").scan(/\s\/(\w+)/).flatten.compact.uniq
Run Code Online (Sandbox Code Playgroud)

这是"Rails方式"吗?有没有更好的办法?

validation activerecord ruby-on-rails activemodel ruby-on-rails-3

7
推荐指数
1
解决办法
538
查看次数