Проверка регулярных выражений в рельсах - PullRequest
0 голосов
/ 18 января 2019

Я новичок в рельсах, и я пытаюсь зарегистрировать имена моих пользователей без специальных символов и пробелов, но разрешаю символ -.

Example : 
@@Pierre! => invalid
Pierre-Louis => valid
Pierre Louis => invalid

В файле User.rb у меня есть:

class User < ApplicationRecord
...
validates :first_name, presence: true, length: {maximum: 25}, format: {with: Regexp.new('[^0-9A-Za-z-]')}
...

У меня нет сообщения об ошибке, и я все еще могу зарегистрироваться, используя специальные символы.

Кроме того, я хотел бы добавить сообщение об ошибке, если имя не подтверждено.

Есть ли у вас какие-либо выводы?

Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 18 января 2019

Когда вы проверяете формат с помощью регулярных выражений, вы должны убедиться, что вы соответствуете всей проверяемой строке. Для этого ваше регулярное выражение должно начинаться с \A и заканчиваться \z, которые являются якорями, обозначающими начало и конец строки.

В вашем случае:

validates :first_name, 
  presence: true, 
  length: {maximum: 25}, 
  format: {with: /\A[-0-9A-Za-z]\z'/}
  message: "Custom message"

при условии, что вы принимаете цифры, маленькие и большие буквы и знак минус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...