Rails:如果给出password_confirmation,请确保密码存在

时间:2016-09-10 08:27:25

标签: ruby-on-rails validation

我正在通过Ruby on Rails Tutorialexercises for 10.1.2 - Unsuccessful Edits我被要求测试应用程序是否正确捕获了无效的表单提交。

也许我做得太彻底了 - 我发现它有效"有效"使用非nil password_confirmation提交nil密码。

我认为has_secure_password会抓住这个?

1)为什么不呢?

2)如果password等于password_confirmation,我该如何确保?

我目前有: validates :password, presence: true, length: { minimum: 6 }, allow_nil: true

我已尝试添加, confirmation: true,但这无济于事。

2 个答案:

答案 0 :(得分:0)

如果您想要设计验证,可以将可验证模块添加到模型中。

devise
  :validatable

如果您想让rails验证它,您可以使用

validates_confirmation_of :password

如果您仍然遇到问题,请检查您如何初始化强参数和/或发布params代码。

答案 1 :(得分:0)

添加validates仅适用于布尔值:

validates :password, presence: true, if: :password_confirmation_given?

def password_confirmation_given?
  password_confirmation.nil? ? false : !password_confirmation.empty?
end