2012-07-08 44 views
20

我想使用設計選項:在我的用戶模型中重新確定,所以無論何時用戶更改他的電子郵件,他都需要使用通過電子郵件發送的鏈接進行確認。設計重新確定

最大的問題是,該電子郵件被髮送從未...

我的設置是用色器件2.1.2是:

用戶模型:

attr_accessible: unconfirmed_email, ... 

devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable 

在initilizer色器件.RB:

config.reconfirmable = true 
在路線

devise_for :users 

以模型字段的形式unconfirmed_email被正確設置。我通過控制檯檢查了這一點。

第一封確認郵件,當用戶在頁面上註冊時發送沒有問題。

我試圖將此代碼添加到初始化目錄,以覆蓋該被觸發的after_update鉤色器件梅索德調試問題:

module Devise::Models::Confirmable 
    def send_confirmation_instructions 
    debugger 
    end 
end 

好像send_confirmation_instructions不會被調用,因爲我從來沒有調試器。

我是否需要調用重新確認,或者在將模型屬性「unconfirmed_email」設置爲新的電子郵件地址時自動觸發? jj。

Thankfull for any help, j。

+1

對於reconfirmable工作你必須添加一個新的列到你的用戶表中 't.string:unconfirmed_email#只有在使用重新確認' 你已經完成了嗎? – Himshwet 2012-07-09 06:48:34

+0

嗨janders。多數民衆贊成在所有設置,我在我的用戶模型和attr_accessible屬性...我還沒有解決這個問題,所以任何幫助是非常wellcome。 – user1311103 2012-07-09 10:49:50

+0

對不起,不知道有什麼問題 – Himshwet 2012-07-10 07:29:37

回答

33

OK,這是尷尬..

潛水到設計代碼後,我想通了,你不需要設置您的用戶模型的unconfirmed_email屬性,但只是改變了現有的電子郵件屬性。屬性unconfirmed_email僅在內部用於Devise存儲電子郵件地址,直到確認。

devise gem的後續版本在初始遷移中解釋了這一點。這裏是「可證實」部分(注意在最後一行的註釋)從XXX_devise_create_users.rb遷移:

## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

對不起打擾,但希望這可以幫助別人有同樣的問題...

+2

謝謝你。很高興知道當我更新模型中的'email'時,Devise會「自動地」填充'unconfirmed_email'。不要忘記標記你的答案爲「接受」(是的,即使你自己回答了!)。 – 2012-09-12 23:19:52

+0

是的......你認爲是對的......即使是在2年後......對我來說也是有益的。 :) – Alfie 2015-01-09 05:06:30