如何不允许用户在 rails 上使用 ruby 使用 space 创建密码?

How to not allow let users create passwords with space using ruby on rails?

我是 Ruby 在 Rails 上的新手,我尝试在我的网站 (localhost) 上注册(姓名、电子邮件、密码、确认密码),但有密码无法注册等限制为空,密码至少为 6 个符号,密码不能只有空格(" ")。然后我想让用户编辑这些属性,但如果他们更改它,我想让他们再次写姓名和邮件而不是密码(这 2 个首先是必需的,如果他们不想更改它,他们就把它们留下,密码不是必需的所以我想让它空白,这就是为什么在这段代码中我使用 allow_blank: true)

# app/models/user.rb
.
. 
.

has_secure_password

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

如果我这样做,用户可以使用空格 (" ") 注册,它甚至允许他们使用最小 6 符号来打破规则(用户可以像这样输入密码:" " 而我不想要这个)这就是问题所在。

但是当我不使用allow_blank:true时,当用户想要编辑他们的属性时,他们需要重新输入密码(我想让他们只写姓名和电子邮件,但密码可以留空并且它届时不会更改)。

我该怎么办?

使用正则表达式,通过validates_format_ofwithout选项。

validates :password,  presence: true,
  length: { minimum: 6 },
  format: { without: /\s/, message: "spaces not allowed" }

Okey 我找到了答案:而不是 allow_blank: true 我应该使用 allow_nil: true.