1 . Для первой необходимости вы можете добавить это к своему имени пользователя validates
:
format: { with: /\A[\w-]+\z/, message: "your format requirements" }
2 . Для вашей второй необходимости я не нашел регулярного выражения для этого, вы можете попробовать добавить настраиваемую проверку.
Сначала добавьте этот метод проверки в вашу модель:
def check_password_format
regexps = {" must contain at least one lowercase letter" => /[a-z]+/,
" must contain at least one uppercase letter" => /[A-Z]+/,
" must contain at least one digit" => /\d+/,
" must contain at least one special character" => /[^A-Za-z0-9]+/}
regexps.each do |rule, reg|
errors.add(:password, rule) unless password.match(reg)
end
end
Затем напишите эту строку в вашей модели:
validate :check_password_format
Таким образом, на странице формы через атрибут .errors
объекта вы можете отобразить пользователям требования к формату, которые они пропустили.