Komplexere Lösung aber wieder verwendbar und mit mehr feinkörnigem Störmeldeversand bedeutet.
Individuelle Validator:
app/Validatoren/username_convention_validator.rb
class UsernameConventionValidator < ActiveModel::EachValidator
def validate_each(record, field, value)
unless value.blank?
record.errors[field] << "is not alphanumeric (letters, numbers, underscores or periods)" unless value =~ /^[[:alnum:]._-]+$/
record.errors[field] << "should start with a letter" unless value[0] =~ /[A-Za-z]/
record.errors[field] << "contains illegal characters" unless value.ascii_only?
end
end
end
(Beachten Sie es nicht erlaubt - und tut nicht ascii erlauben, für Vollständigkeit halber '_.')
Verwendung:
app/models/user.rb
validates :name,
:presence => true,
:uniqueness => true,
:username_convention => true
Das ist, was ich kam mit: validates_format_of: Benutzername,: mit =>/^ [- az \ d _] + $/ – atmorell
Wenn Sie eine Antwort das dein Problem löst, solltest du es als akzeptiert markieren. –