我试图在我的应用程序中绕过用户模型的密码验证。我有以下基于一些类似的SO问题:
model.rb
attr_accessor :skip_password_validation
has_secure_password
validates :password, length: { minimum: 6 }, allow_nil: true, unless: :skip_password_validation
controller.rb
@mem.skip_password_validation = true
if @mem.valid?
#do some stuff
else
render 'last_template'
end
这始终呈现最后一个模板并返回密码验证错误。谢谢你的帮助。
答案 0 :(得分:1)
问题在于as mentioned in the docs has_secure_password
添加了自己的验证:
自动添加以下验证:
- 创建时必须出现密码
- 密码长度应小于或等于72个字符
- 确认密码(使用password_confirmation属性)
Also as mentioned in the docs您可以通过提供:validations
选项停用验证,并将其设置为false
:
为了进一步定制,可以通过传递
validations: false
作为参数来抑制默认验证。