2011-01-11 207 views
7

默認情況下,devise使用電子郵件註冊在並登錄。如何在設計中「安全」更改用戶的電子郵件地址?

但我想讓該電子郵件地址應該被允許被用戶更改。

如果我允許用​​戶編輯電子郵件地址,並且用戶指定了一個「不正確」(即錯誤輸入錯誤)電子郵件地址,然後用戶註銷,用戶還會忘記輸入的內容電子郵件是,現在用戶帳戶無法訪問!

如何最好的解決這個問題? (除了創建單獨的,不可更改的用戶名字段,將永遠允許用戶登錄)

回答

12

如果用戶更改其電子郵件,則可以強制用戶再次確認其帳戶。

有一次,您更新了相關用戶的密碼,您需要取消確認該用戶,然後重新發送確認電子郵件。

要取消確認用戶:

user = User.find(1) 
if user.confirmed? 
    user.confirmed_at = nil 
    user.save(:validate => false) 
end 

重新發送電子郵件確認:

user = User.find(1) 
user.send_confirmation_instructions 

希望這有助於!

8

設計開箱即用。下面是從初始的信息:

# If true, requires any email changes to be confirmed (exactly the same way as 
# initial account confirmation) to be applied. Requires additional unconfirmed_email 
# db field (see migrations). Until confirmed new email is stored in 
# unconfirmed email column, and copied to email column on successful confirmation. 
config.reconfirmable = true 

confirmable module您可能會看到它是如何工作的。

+0

最有可能它沒有在早期版本的設計中實現(今天的版本是3.2.2)。 – peresleguine 2014-01-16 11:51:10

相關問題