2011-05-26 55 views
0

如何重寫設計密碼控制器:如何覆蓋設計密碼控制器?

https://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb

我要做到以下幾點:

  1. downcase提交密碼重置的所有電子郵件。數據庫中的所有電子郵件均爲小寫。如果用戶嘗試重置任何字符爲大寫的有效電子郵件,重置將無法找到用戶。和設計甚至沒有提供一個錯誤消息,說沒有用戶發現
  2. 如果在def create中找不到用戶,我想添加一個說,沒有找到用戶,你輸入正確的電子郵件?

如何完成上述2項?我相信需要覆蓋設計密碼控制器。我怎麼做?或者,如果你有更好的解決方案,那就更清潔了,我想聽聽它。

感謝

回答

3

的色器件初始化有一個選項,以使任何領域不區分大小寫:

config.case_insensitive_keys = [ :email ]

如果我沒有記錯它是在新的版本中加入,如果你沒有看到一些在你的初始化程序中有相關的評論,那麼你應該使用bundle upgrade devise升級你的設計寶石。我正在使用版本1.3.3。 如果輸入了無效的電子郵件,此版本還顯示「找不到電子郵件」錯誤。

如果您沒有收到錯誤消息,請將<%= devise_error_messages! %>添加到您的視圖中。您可以通過編輯自定義錯誤消息config/locales/devise.en.yml

+0

我使用devise(1.2.1) – AnApprentice 2011-05-26 18:55:42

+0

它被添加到1.2rc中:https://github.com/plataformatec/devise/blob/master/CHANGELOG.rdoc因此它應該爲你工作。嘗試將'config.case_insensitive_keys = [:email]'添加到devise.rb初始化程序。 – 2011-05-26 19:03:03

+0

WAHOOO它的工作。這是我的一天。謝謝 – AnApprentice 2011-05-26 20:26:30