0

Railsアプリでの認証にDeviseを使用しています。ユーザーとプロフェッショナルの 2 つのモデルがあります。誤ってユーザーとしてログインしようとしている多くの専門家がいます。ユーザーとして失敗した場合、入力した電子メールが専門家と一致するかどうかを確認したいと考えています。

たとえば、Professional がユーザーとしてログインしようとすると、次のようなフラッシュ メッセージが表示されます。

「このアカウントのユーザー名/パスワードは見つかりませんでしたが、Professional アカウントは見つかりました。Professional としてログインするには、ここをクリックしてください。」

Deviseでこれを行う方法について何か考えはありますか?

4

1 に答える 1

0

パスワードを忘れた機能で同様のことをしました。それはあなたを助けることができます。

編集:プロフェッショナルチェックを追加しました。

def reset
  @idiot = User.where(:email => params[:email]).first
  unless @idiot.nil?
    Notifier.send_reset_notice(@idiot).deliver
    redirect_to new_user_session_url, notice: "A new password will be emailed to #{@idiot.name}'s address shortly."
  else 
    @professional = Professional.where(:email => params[:email]).first
    unless @professional.nil?
      redirect_to new_professional_session_url, notice: "That email address is assigned to a professional. Sign in below."
    else 
      redirect_to new_user_session_url, :flash => { :error => "That email address matches no user." }
    end
  end
end

そしてビューで:

<%= form_tag reset_path(:email) do %>
  <%= email_field_tag :email, nil, :placeholder => 'Email address' %>
  <%= submit_tag "Reset password" %></div>
<% end %>

あなたを正しい軌道に乗せるはずです。

于 2013-03-27T02:44:56.287 に答える