0

それに関する wiki ページがあることは知っていますが、私は Rails を初めて使用するので、そのページを理解するのに多くの困難を抱えています。

ユーザーの登録コントローラーをオーバーライドする必要がありました。ユーザーがサインインに失敗した場合、カスタム サインイン ページにリダイレクトされるようにします。しかし、アプリケーションは彼を gem 内のサインイン ページに送ります。

どうすればそれを達成できますか? このクラスをどこに配置すればよいですか?どうすれば変更できますか? 複数のモデルがあり、それぞれに異なるサインイン ページがあります。各モデルのスコープを設定するにはどうすればよいですか?

class CustomFailure < Devise::FailureApp

  def redirect_url

    #return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
    new_user_session_url(:subdomain => 'secure')
  end

 # You need to override respond to eliminate recall
 def respond
   if http_auth?
     http_auth
   else
     redirect
   end
 end

終わり

Devise は強力な宝石ですが、いくつかの wiki ページでは、多くの新しいプログラマーが存在する可能性があることを考慮していません。

4

2 に答える 2

1

私は認証失敗オーバーライドクラスを/lib直接持っています。

これは、ユーザーのさまざまなスコープを処理する方法を示すベアボーン バージョンです。

class MyAuthFailure < Devise::FailureApp

  # add different cases here for diff scopes.
  def redirect_url 
    if warden_options[:scope] == :user 
      root_path 
    elsif warden_options[:scope] == :admin 
      admin_root_path 
    end 
  end 

  # You need to override respond to eliminate recall
  def respond
    if http_auth?
      http_auth
    else
      redirect
    end
  end  
end

あなたはこのクラスを入れます/lib/my_auth_failure.rb

于 2012-06-13T16:22:35.413 に答える