私の解決策は、Devise のパスワード コントローラーを拡張/オーバーライドすることです。これを行うには、次のように、Devise のパスワード コントローラーから継承するコントローラー (パスワードと呼びましょう) を作成します。
class PasswordsController < Devise::PasswordsController
次に、この変更が有効になるようにルート ファイルを編集します。
devise_for :users, :controllers => { :passwords => 'passwords' }
create
次に、アクションをオーバーライドします。これを行う方法はいくつかありますが、何をしたいのかよくわからないので、できることを 2 つ紹介します。
「メールが見つかりません」というエラーのみを防止して、データベースに存在するメールまたは存在しないメールを人々が見つけられないようにするだけです。
def create
self.resource = resource_class.send_reset_password_instructions(resource_params)
respond_with({}, :location => after_sending_reset_password_instructions_path_for(resource_name))
end
入力した電子メールに電子メールを送信したい場合:
def create
self.resource = resource_class.send_reset_password_instructions(resource_params)
unless successfully_sent?(resource)
Devise::Mailer.reset_password_instructions(resource).deliver
end
respond_with({}, :location => after_sending_reset_password_instructions_path_for(resource_name))
end
さて、この最後の解決策の問題は、存在しないユーザーに電子メールを送信していることです...そして、ユーザーが戻ってきたとき、彼のユーザーアカウントはできるため、新しいパスワードを入力することができません見つからない。しかし、あなたが本当にこれをやりたいのなら、うまくいけば、私はあなたを正しい軌道に乗せることができます.