Проверка 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
Это "путь рельсов"? Есть ли способ лучше?