Äußerst komplexe Lösung, aber wiederverwendbar und mit feiner abgestufter Fehlermeldung.
Benutzerdefinierter Validator:
app/validators/username_convention_validator.rb
class UsernameConventionValidator < ActiveModel::EachValidator
def validate_each(record, field, value)
unless value.blank?
record.errors[field] << "ist nicht alphanumerisch (Buchstaben, Zahlen, Unterstriche oder Punkte)", es sei denn, der Wert entspricht /^[[:alnum:]._-]+$/ nicht
record.errors[field] << "sollte mit einem Buchstaben beginnen", es sei denn, der Wert[0] entspricht /[A-Za-z]/
record.errors[field] << "enthält ungültige Zeichen", es sei denn, der Wert.asci_only?
end
end
end
(Beachten Sie, dass es ' . - _ ' erlaubt und nicht ascii-zulässig ist, um die Vollständigkeit zu gewährleisten)
Verwendung:
app/models/user.rb
validates: name,
:Präsenz => true,
:Einzigartigkeit => true,
:username_convention => true