我正在使用authlogic和我的用户模型,登录字段设置为使用电子邮件,因此:
acts_as_authentic do |c|
c.login_field = :email
end
如果我尝试创建新用户,并且该电子邮件已被使用,则会两次添加重复的电子邮件错误:(来自控制台)
user = User.new(:first_name => "fred", :last_name => "Smith", :email => User.last.email);user.valid?;errors = user.errors
=> {:email=>["has already been taken", "has already been taken"]}
我猜这与使用电子邮件作为登录有关,也许?除了validates_format_of之外,我在电子邮件上没有任何其他验证,并且我尝试删除该验证(没有任何区别)。
这是一个痛苦,因为它弄乱了我在验证失败时在表单上显示的错误。
在我尝试破解authlogic之前,有谁知道为什么会发生这种情况?谢谢,最大
答案 0 :(得分:10)
我刚遇到同样的问题。尝试在config.validate_email_field = false
块中调用acts_as_authentic
。它仍将验证登录字段,在我们的情况下,在电子邮件字段中,但只有一次。
acts_as_authentic do |config|
config.login_field :email
config.validate_email_field = false
...
end
答案 1 :(得分:2)
Authlogic中有两种方法:validate_email_field和validate_login_field。
这些方法禁用/启用特定验证:
我也在我的应用中使用config.login_field :email
,我需要确保User#email
已经过验证。所以在我的情况下,我选择使用config.validate_login_field = false
,因为验证之间存在差异。