如何覆盖Authlogic附带的默认验证?

时间:2010-10-05 07:11:24

标签: ruby-on-rails authlogic

我有自己的密码/登录规则,我想实现,例如:

  • 密码:至少一个数字,一个小写字符和一个大写字符
  • 登录:字母数字,长度在4到15个字符之间

等...

目前,当我没有输入密码并在我的表单中登录时,我收到以下错误(来自Authlogic的默认验证):

  • 登录太短(最少3个字符)
  • 密码太短(最少4个字符)
  • 密码确认太短(最少4个字符)

这些验证规则不在我的模型中,它们来自Authlogic gem。我知道我可以添加一些配置:

acts_as_authentic do |config|
  config.validate_password_field = false
end

问题是我找不到这些配置的好文档,当我尝试上面的那个,所以我可以使用我自己的,它抱怨: undefined method 'password_confirmation' for #<User:0x7f5fac8fe7c0>

这样做:

acts_as_authentic do |config|
  config.validate_password_field = false

  # added this so it might stop complaining
  config.require_password_confirmation = true
end

什么都不做。

有没有办法让Authlogic需要密码确认,而忽略所有其他验证,以便我可以控制它?

1 个答案:

答案 0 :(得分:2)

只需在模型中添加以下行即可避免undefined method 'password_confirmation'

attr_accessor :password_confirmation

如果您想自己处理确认,请添加:

validates_confirmation_of :password

如果您深入了解代码,可以在password.rb

中找到
if require_password_confirmation
  validates_confirmation_of :password, validates_confirmation_of_password_field_options
  validates_length_of :password_confirmation, validates_length_of_password_confirmation_field_options
end