ユーザー登録を編集するために、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 で単純なぼかしイベントを使用できるように感じます。