2010-10-05 47 views
1

我有我想要实现如我自己的密码/登录规则:我如何覆盖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需要密码确认,而忽略所有其他验证,以便我可以控制这个?

回答

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 
+1

这样做,谢谢!同样,为了其他人的利益,在authlogic配置中添加“validate_login_field false”也会阻止登录ID验证。 – DJTripleThreat 2010-10-05 20:31:35