1

ユーザー登録を編集するために、Devise が生成したフォームに current_password フィールドが存在することを確認しようとしています。

registrations/edit.html.erb :

<h2>Edit <%= resource_name.to_s.humanize %></h2>
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :method => :put, :validate => true) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :email, :required => true %>

    <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
      <p>Currently waiting confirmation for: <%= resource.unconfirmed_email %></p>
    <% end %>

    <%= f.input :password, :autocomplete => "off", :hint => "leave it blank if you don't want to change it", :required => false %>
    <%= f.input :password_confirmation, :required => false %>
    <%= f.input :current_password, :hint => "we need your current password to confirm your changes", :required => true, :validate => true %>
  </div>

  <div class="form-actions">
    <%= f.button :submit, "Update" %>
  </div>
<% end %>

<h3>Cancel my account</h3>

<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete %></p>

<%= link_to "Back", :back %>

これはうまくいかないようです。current_password フィールドが空白の送信は通過し、サーバーで検証されます。client_side_validations でこれを処理できるようにするために、どこを見ればよいか、何をすべきかわかりません。登録モデルがどこにあるのか正確にはわかりません。

devise をいじってみると、 current_password のバリデーションが client_side_validations が拾うとは思えない方法で処理されていることがわかります: Devise の関連メソッド。この場合、jquery で単純なぼかしイベントを使用できるように感じます。

4

0 に答える 0