是否可以让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

关于ruby-on-rails - 可选密码确认Authlogic,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6181730/

10-13 05:58