2011-06-29 7 views
7

のエラーを「メールが既に取られている」発生私は、このように、電子メールを使用するように設定したログインフィールドで、私のユーザモデルとauthlogic使用しています:は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をハックしようとする前に、なぜこれが起こっているのかも知れませんか?ありがとう、最大

答えて

10

私はちょうど同じ問題に直面した。 acts_as_authenticブロックでconfig.validate_email_field = falseに電話してみてください。それはログインフィールドを検証します。私たちの場合、電子メールフィールドでは一度だけです。

+0

aha、cool、thanks :) –

+2

また、そのフィールドに手動で割り当てられていないかどうかを確認してください。 'validates:email、:presence => true'です。これは、メッセージが3回返されることになりました。情報のために – mrt

2

Authlogicには、validate_email_fieldとvalidate_login_fieldの2つの方法があります。

これらの方法は、特定の検証を有効/無効にします。

私も私のアプリでconfig.login_field :emailを使用して、私は確かUser#emailことをする必要がありますが検証されます。だから私の場合は、config.validate_login_field = falseのバリデーションの違いのために使用することにしました。

+0

ありがとう! –