2

デフォルトのデバイス コントローラーをオーバーライドできることはわかっています。私は、Registrations および Sessions Controller に対してオーバーライドしました。devise の locale でフラッシュ メッセージのテキストを変更できることも知っています。ただし、ユーザー名とパスワードの組み合わせが無効な場合に、セッション コントローラーに表示されるフラッシュ メッセージの種類を変更する方法がわかりません。

作成方法は次のようになります

def create
  self.resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_navigational_format?
  sign_in(resource_name, resource)
  respond_with resource, :location => after_sign_in_path_for(resource)
end

検証はフォローコール中に行われると思われます

warden.authenticate!(auth_options) 

しかし、これは私のアプリでそれを上書きする方法がわからないところです。

また、フラッシュ通知の色を変更するという単純なユースケースの複雑なオーバーライドだと思います。

どんな洞察も大歓迎です。

ありがとう!ニック

4

1 に答える 1

7

カスタム失敗アプリでそれを行うことができます。ご覧のとおり、このフラッシュ メッセージはここで設定されているため、カスタムの失敗アプリで変更できます。

最初に、Devise の失敗アプリから失敗アプリを継承します。

class CustomFailure < Devise::FailureApp
  def recall
    env["PATH_INFO"]  = attempted_path
    flash.now[:error] = i18n_message(:invalid)
    self.response = recall_app(warden_options[:recall]).call(env)
  end
end

このファイルをアプリのどこかに置き、Devise と言って次のように使用します ( config/initializers/devise.rb):

config.warden do |manager|
  manager.failure_app = CustomFailure
end
于 2013-03-09T17:06:29.633 に答える