Authlogic:如果密码正在更新,我该如何才能验证密码?

时间:2011-02-22 04:51:35

标签: ruby-on-rails authlogic

我正在使用带有rails 3的authlogic。我的用户模型中有这个:

 validates :last_name, :presence => true

  acts_as_authentic do |c|
    c.validates_length_of_password_field_options = {:minimum => 7}
  end

然后我有一个更新用户名称的控制器操作:

  def update_name
    if @current_user.update_attributes(params[:user])
      flash[:success_name] = true
      redirect_to edit_user_via_account_settings_path
    else
      render 'edit_user_via_account_settings'
    end
  end

如果用户输入空白姓氏并尝试使用此控制器操作更新其姓名,则@current_user模型正确地在姓氏上有错误,但它也有密码错误(密码必须至少为7个字符) 。如果正在更新密码,我该如何才能验证密码?

2 个答案:

答案 0 :(得分:2)

您需要使用merge_validates_ * config方法而不是validates_ *方法。前者保留条件(如忽略空密码),后者覆盖它们。这应该清除一切。并且不要在merge_ *方法上使用赋值。

a.merge_validates_length_of_password_field_options :minimum => 7 

答案 1 :(得分:1)

我认为您正在寻找的配置可以在这里找到

http://rdoc.info/github/binarylogic/authlogic/master/Authlogic/ActsAsAuthentic/Password/Config#ignore_blank_passwords-instance_method

除非是新用户,否则如果没有提供密码,则不会验证密码。