【问题标题】:has_secure_password creating a user even though password and passowrd_confirmation do not matchhas_secure_password 创建用户,即使密码和 passowrd_confirmation 不匹配
【发布时间】:2023-04-01 06:55:01
【问题描述】:

我在我的用户模型中使用 has_secure_password。在注册时,我提供密码和密码确认字段。

我手动添加了验证以检查我的用户模型中的密码和确认是否匹配。

has_secure_password
validates :password, presence:true, length: {minimum:6}
validate :pass_valid
def pass_valid
    errors.add(:base,"password and confirmation do not match") if password!=password_confirmation
end 

我的表单是这样的

= f.label :'Password'
= f.password_field :password
= f.label :'Password Confirmation'
= f.password_field :password_confirmation

即使我输入的密码确认与密码不同,表单也会出错。我认为 has_secure_password 验证密码和确认是否匹配,我删除了 pass_valid 方法。即使密码和确认不匹配,现在也会创建用户。

有人可以帮帮我吗?

P.S:我在我的 gemfile 中使用了受保护的属性。所以在用户模型的 attr_accessible 中添加了密码和密码确认。

【问题讨论】:

  • 您在哪里声明验证基于两个字段相等?
  • 对不起!我复制粘贴的错误。已编辑
  • 我认为你应该使用 validates_with,而不是 validates 。

标签: ruby-on-rails ruby-on-rails-4 activerecord rubygems


【解决方案1】:

尝试使用validates_with :yourValidator,在本例中为 pass_valid。

【讨论】:

  • 看起来我的表单中的密码确认总是被视为空白。不知道为什么。我为密码确认添加了一个额外的验证。它说密码确认不能为空,即使我输入密码确认。
  • 您确定将 password_confirmation 作为可访问属性放在模型中吗?
  • 是的!正如我在 p.s 中所说,我将它们添加到 attr_accessible
猜你喜欢
  • 2017-04-25
  • 2021-04-04
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 2017-12-07
相关资源
最近更新 更多