2011-06-29 38 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

哈哈,很酷,謝謝:) –

+2

還要確保你沒有驗證手動分配在該領域,即。 'validates:email,:presence => true'。這導致我讓消息返回3次。 – mrt

2

在Authlogic中有兩種方法:validate_email_field和validate_login_field。

這些方法開啓/關閉特定的驗證:

我也用config.login_field :email在我的應用程序,我需要確保User#email被驗證。所以在我的情況下,我選擇使用config.validate_login_field = false,因爲驗證之間的差異。

+0

感謝您的信息! –

相關問題