Проверка Rails, чтобы гарантировать, что имя пользователя не конфликтует с существующим маршрутом?

я хочу убедиться, что пользователи не могут создавать имена пользователей, которые конфликтуют с моими существующими маршрутами. Я также хотел бы иметь возможность отрицать будущие маршруты, которые я могу определить. Я думаю об этом так:

В модели:

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

  cattr_accessor :invalid_usernames

  validates :username, :exclusion { :in => @@invalid_usernames }
end

В каком-то инициализаторе:

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

Это «путь Rails»? Есть ли способ лучше?

7
задан poochenza 2 January 2012 в 23:20
поделиться