Как не разрешить пользователям создавать пароли с пробелом, используя ruby ​​на рельсах? - PullRequest
0 голосов
/ 27 декабря 2018

Я новичок в Ruby On Rails и попытался зарегистрироваться (имя, адрес электронной почты, пароль, подтверждение пароля) на моем сайте (localhost) с такими ограничениями, как пароль не может быть пустым, пароль длиной не менее 6 символови пароль не может быть похожим только на пробелы ("").Затем я хочу позволить пользователям редактировать эти атрибуты, но если они меняют их, я хочу, чтобы они снова писали имя и почту, но не пароль (эти два сначала необходимы, если они не хотят менять их, они оставляют их, пароль не требуется).поэтому я хочу сделать это пустым, поэтому в этом коде я использую allow_blank: true)

# app/models/user.rb
.
. 
.

has_secure_password

validates :password, presence: true, length: { minimum: 6 }, allow_blank: true

Если я это сделаю, пользователи могут зарегистрироваться с пробелами (""), и это даже позволит им разбитьправило с минимальным 6 символом (пользователи могут вводить пароль, например: «», а я этого не хочу), так что это проблема.

Но когда я не использую allow_blank: true, когда пользователи хотят редактироватьих атрибуты, которые они должны написать снова пароль (я хочу, чтобы они писали только имя и адрес электронной почты, но пароль можно оставить пустым, и тогда он не будет изменен).

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Хорошо, я нашел ответ: вместо allow_blank: true я должен был использовать allow_nil: true.

0 голосов
/ 27 декабря 2018

Используйте регулярное выражение через параметр without, равный validates_format_of.

validates :password,  presence: true,
  length: { minimum: 6 },
  format: { without: /\s/, message: "spaces not allowed" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...