While going source spelunking, I came across this piece of code in Rails' ActiveModel: ```ruby key = "#{key.to_s.camelize}Validator" begin validator = key.include?("::".freeze) ? key.constantize : const_get(key) rescue NameError raise ArgumentError, "Unknown validator: '#{key}'" end ``` [Rails source: `active_model/validations/validates.rb`][1] This means that you can namespace your custom validators and use them like this: ```ruby # lib/internal/email_validator.rb module Internal class EmailValidator def validate_each(record, attribute, value) return if value.ends_with?('@private_domain.com') record.errors.add(attribute, 'not from private domain') end end end # app/models/admin.rb class Admin < ApplicationRecord validates :email, 'internal/email': true end ``` [1]: https://github.com/rails/rails/blob/375a4143cf5caeb6159b338be824903edfd62836/activemodel/lib/active_model/validations/validates.rb#L116-L122