0

我们在 Rails 应用程序中使用 Devise 进行身份验证。我们有两种模式 - 用户和专业人士。我们有许多专业人士不小心尝试以用户身份登录,如果用户登录失败,我们想检查输入的电子邮件是否与专业人士匹配。

例如,如果 Professional 尝试以用户身份登录,我们希望显示如下所示的 flash 消息:

“我们找不到此帐户的用户名/密码,但是,我们确实找到了专业帐户。单击此处以专业身份登录。”

关于如何用设计做到这一点的任何想法?

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 回答