Ruby on Rails中如何将validates_confirmation_of的错误信息切换到确认字段?
Ruby on Rails中如何将validates_confirmation_of的错误信息切换到确认字段?
嗨,我来帮你搞定这个问题!在Rails 3.2里,默认的validates_confirmation_of :password确实会把密码不匹配的错误信息挂到:password字段上,要是想把错误转到:password_confirmation字段,最直接的办法是自定义验证方法,代替默认的校验规则。
具体操作步骤如下:
- 先移除原来的默认校验代码:
# 删掉这一行 # validates_confirmation_of :password
- 添加自定义的验证方法:
validate :password_confirmation_matches_password private def password_confirmation_matches_password # 先判断密码存在,避免空密码时触发不必要的校验 if password.present? && password != password_confirmation # 把错误信息添加到password_confirmation字段 # 用:confirmation会调用Rails内置的错误消息,也可以自定义内容 errors.add(:password_confirmation, :confirmation) # 要是想用自定义中文消息,改成下面这样: # errors.add(:password_confirmation, "和密码不匹配") end end
这样设置后,当密码和确认密码不匹配时,错误信息就会显示在:password_confirmation字段对应的表单位置,完全符合你的需求。
这个方法在Rails 3.2版本里可以完美运行,而且能精准控制错误信息的归属,比修改默认校验的源码要安全可控得多。
备注:内容来源于stack exchange,提问作者Starscream512
相关产品推荐
相关产品推荐

