Authlogic,由于验证无法更新用户

时间:2011-01-31 18:09:46

标签: ruby-on-rails ruby validation authlogic

我有这样的authlogic设置

acts_as_authentic do |config|
  config.login_field = 'email'
  config.merge_validates_length_of_email_field_options :in => 5..50
  config.validates_length_of_password_field_options = {:on => :update, :minimum => 4 }
  config.validates_length_of_password_confirmation_field_options = {:on => :update, :minimum => 4}
end

我无法更新用户属性,因为密码和password_confirmation尝试在保存时验证并且它们是零。有没有办法暂时关闭验证,或者更好的解决方案?

1 个答案:

答案 0 :(得分:0)

以下是它对我有用的方法:

在验证语句中添加一个条件,如下所示:

config.validates_length_of_password_field_options = {:on => :update, :minimum => 4, :if => :should_validate? }

然后向您的用户模型添加自定义should_validate?功能。例如,你可以做

attr_accessor :updating_password    

def should_validate?
  updating_password or new_record?
end

这样,您可以在需要验证密码的任何时候在控制器中显式设置user.updating_password = true,如果您不想进行任何验证,请保持原样。

(这是我的第一个答案,所以我希望它对你有所帮助。否则请不要犹豫,纠正我。)