я хочу убедиться, что пользователи не могут создавать имена пользователей, которые конфликтуют с моими существующими маршрутами. Я также хотел бы иметь возможность отрицать будущие маршруты, которые я могу определить. Я думаю об этом так:
В модели:
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»? Есть ли способ лучше?