Devise 忘記密碼寄信實作

Cindy Liu
2 min readJul 9, 2018

Devise 是一個強大的 gem ,可以輕鬆的完成登入的功能,那要如何加上忘記密碼寄信的功能呢?

Rails 提供了 ActionMailer 元件,來做到 E-mail 功能的整合,會感覺用起來和 Controller 很像 ( 不過devise其實已經幫我們設定好了XD )。

本篇主要重點在實作~

  • 在完成以下步驟前需已經先裝好 devise gem

Step 1

在/config/environments/development.rb

false 改 true (做這個更改目的是在測試寄信錯誤的時候可以馬上顯示錯誤)

Step 2

由於這裡需要設定要發送mail的帳號密碼,需要隱藏不公開,故這邊分別用 development 和 production 兩種環境做不同設定來介紹兩種設定方式

  1. development:

在Step 1下新增下面兩行

在 config/ 底下新增 email.yml (這裡我用gmail設定)

最後記得不要追蹤這個檔案,到 .gitignore 新增 config/email.yml

2. production:

在/config/environments/production.rb

將敏感資料用環境變數 ENV 儲存,記得要在 production 的環境設定這些資料進去,heroku可參考這裡,如果太多要存可以使用 gem 協助,例如 dotenv-rails

Step 3

到config/initializers/devise.rb

這樣就完成了!

另外建議用 gmail 的話可以申請使用兩步驟驗證後使用應用程式密碼登入,這個方法比較不會被擋。

--

--