Rails 4 - 如何在控制器上正确设置验证操作?

时间:2016-07-11 16:24:12

标签: ruby-on-rails devise

我通过Devise进行LDAP身份验证,在我在数据库上创建用户之前(由于用户涉及业务规则而附加了其他信息),我想收集公司上的其他一些信息&# 39; s服务器。

我有一个user_query操作,以便我可以显示以下模式:

<div class="modal-dialog">
  <div class="modal-content">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal">&times;</button>
      <h3>Find User by Email</h3>
    </div>
    <div class="modal-body">
      <% flash.each do |name, msg| -%>
          <%= content_tag :div, msg, class: name %>
      <% end -%>
      <%= form_tag('/users/new', method: :get, remote: true) do -%>
          <%= text_field_tag 'user_email', nil, placeholder: 'Insert user email', class: 'form-control' %>
          <%= submit_tag 'Get user information', remote: true, class: 'btn btn-default' %>
      <% end -%>
    </div>
  </div>
</div>

它有一个文本框,用户输入电子邮件以查询服务器并检查该用户是否存在,如果存在,则重定向到new用户操作,发送找到的用户信息,否则,我&# 39; d喜欢它显示错误,指出无法找到通知的用户电子邮件。

我在用户通知email后创建的用于执行此验证的操作是authenticate_user_email,如下所示:

def authenticate_user_email
  respond_to do |format|
    if authenticated_user = Devise::LDAP::Adapter.get_ldap_entry(params[:user_email])
      format.html { redirect_to action: :new, authenticated_user: authenticated_user }
    else
      format.json { render json: 'User email not found', status: :not_found }
    end
  end
end

但是,我无法将authenticate_user_email设置为after_action user_query,但我也不知道这是否是正确的做法,这就是为什么我问,设置此验证的正确方法是什么(请记住,每个操作都是在模态中呈现的)?

感谢。

1 个答案:

答案 0 :(得分:0)

更改cmovg方法中的if条件

authenticate_user_email

authenticated_user = Devise::LDAP::Adapter.get_ldap_entry(params[:user_email])

另外,请查看Active Record Validation作为@lurker建议的