可选密码确认Authlogic

问题描述

| 是否可以让AuthLogic验证密码确认(如果存在),否则将其忽略吗?因此,如果我的参数如下,我想失败:
{ user: { password: \"abcd\",password_confirmation: \"defg\" }
但是,如果参数如下所示,我希望成功:
{ user: { password: \"abcdefgh\" } }
谢谢!     

解决方法

        这不是AuthLogic的问题,此代码应能解决问题:
class User < ActiveRecord::Base
  ...

  def update_without_password_confirmation(params={})
    params.delete(:password) if params[:password_confirmation].blank?
    params.delete(:password_confirmation) if params[:password].blank?

    update_attributes(params)
   end      
end
然后在需要更新User的属性时从控制器调用此方法。如果用户未指定password_confirmation,它将被忽略。 您可以使用其他几种技术来获得相同的效果,例如,使用before_validation(:on =>:update)回调。 更新:如果您想完全跳过密码验证,则act_as_authentic接受一个块以自定义其行为:
clas User < AR::Base
  acts_as_authentic do |u|
    u.require_password_confirmation=false # you can also use :if => some_condition
    u.validate_password_field=false
  end
end
这有点没记载:P检查此文件: https://github.com/binarylogic/authlogic/blob/master/lib/authlogic/acts_as_authentic/password.rb     ,        
before_validate :check_password_confirmation
def check_password_confirmation
  if self.password_confirmation.blank?
    self.password = nil
  end
end
有了额外的好处,您不必担心在控制器中设置或取消设置的事情-该模型可以正常地继续update_attributes。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...