我正在使用带有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个字符) 。如果正在更新密码,我该如何才能验证密码?
答案 0 :(得分:2)
您需要使用merge_validates_ * config方法而不是validates_ *方法。前者保留条件(如忽略空密码),后者覆盖它们。这应该清除一切。并且不要在merge_ *方法上使用赋值。
a.merge_validates_length_of_password_field_options :minimum => 7
答案 1 :(得分:1)
我认为您正在寻找的配置可以在这里找到
除非是新用户,否则如果没有提供密码,则不会验证密码。