2011-09-19 52 views
17

我正在使用設計,我希望能夠在開發模式時跳過確認電子郵件。由於我的應用程序無法在本地計算機上運行時發送電子郵件,因此我只會收到警報消息,說您需要在訪問應用程序之前確認。使用devise在開發中跳過確認電子郵件

回答

23

嘗試開信刀寶石從瑞安貝茨

https://github.com/ryanb/letter_opener

它會打開瀏覽器的郵件而不發送。如果你在開發中,你不想跳過東西,因爲東西會被遺漏/被遺忘。

+0

或[letter_opener_web](https://github.com/fgrehm/letter_opener_web)進行登臺 –

+0

不確定這裏的提問者,但我個人正在用大量數據填充一個大型應用程序。我剛在瀏覽器中打開了600多個標籤,因爲我確實使用了開信刀。我同意在大多數情況下,你不想跳過,在這種情況下,我確定。需要跳過。 – Sean

1

設計使用ActionMailer發送電子郵件。在測試模式下,ActionMailer實際上不應該發送任何電子郵件。

查看this tutorial瞭解ActionMailer和測試環境的說明。

因此,根據環境,您可以基本關閉交貨,而不會影響您的實際測試。您只需在environments/test.rb文件中指定該選項。

+0

我在測試文件中看到它具有以下代碼:#告訴Action Mailer不要將電子郵件發送到現實世界。 #測試傳遞方法將發送的電子郵件累積到 #ActionMailer :: Base.deliveries數組中。 config.action_mailer.delivery_method =:test我應該只是將該代碼片段複製到config/environments/development.rb文件中 – tomciopp

+0

嗯即使我關閉了交付但我仍然不需要一種方法來滿足可確認的模塊,因爲我仍然會得到我需要確認的相同錯誤。 – tomciopp

+0

如果您的意思是,只要考慮測試,就可以滿足它的一種方法,那麼我只會使用模擬對象來僞造確認,或者僅從數據庫提供確認代碼,因爲實際郵件的傳遞不是'在測試中什麼是重要的。重要的是確認機制的作用,對嗎?也就是說,當通過確認URL顯示正確的確認碼時,您想知道某些「已確認」標誌在數據庫中翻轉了嗎? – jefflunt

2

在Rails 3中,您可以使用「攔截器」重新路由您的開發電子郵件,如Railscast 206中所述。

26

設計也有一個方法skip_confirmation!,您可以在保存它之前調用模型以避免發送郵件。它只是設置confirmed_at屬性,這會導致跳過郵件發送。

1

以您的模型爲設計。通常它的user.rb.並刪除或註釋配置comfirmable。 這將防止確認的過程

13

那樣簡單說

user=User.new 
user.email="[email protected]" 
user.password="yourPassword" 
user.skip_confirmation! 
user.save 
+2

就像一個小小的FYI,你可以把所有這些放在一個塊中:'user = User.new {| u | u.email ='[email protected]'; u.password ='yourPassword'; u.skip_confirmation! } .save'。積木很有趣! – wulftone

3

如果你想有一個真正的輕量的方式來做到這一點,看看在你的終端註冊後 - 軌輸出顯示了電子郵件發送後,您可以複製粘貼確認鏈接,確認帳戶,然後繼續測試。

原油,但有效。

相關問題