Rails在条件上跳过验证

时间:2015-05-26 18:21:28

标签: ruby-on-rails ruby validation ruby-on-rails-4

我试图在我的应用程序中绕过用户模型的密码验证。我有以下基于一些类似的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

这始终呈现最后一个模板并返回密码验证错误。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

问题在于as mentioned in the docs has_secure_password添加了自己的验证:

  

自动添加以下验证:

     
      
  • 创建时必须出现密码
  •   
  • 密码长度应小于或等于72个字符
  •   
  • 确认密码(使用password_confirmation属性)
  •   

更新

Also as mentioned in the docs您可以通过提供:validations选项停用验证,并将其设置为false

  

为了进一步定制,可以通过传递validations: false作为参数来抑制默认验证。