I have my login form, and my js mask, all ok. But where I put the code:
cpf.gsub!(/(\.|\-)/, "")
For mask work?
I need generate devise's controller for put on login or just model? I need User model:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
before_validation do
self.cpf.gsub!(/(\.|\-)/, "")
end
end
But it just work with registration user, dont login. My login is this:
<div class="login">
<div class="panel panel-default">
<div class="panel-heading"><h4 class="cor-texto">AUTENTICAÇÃO DO USUÁRIO</h4></div>
<div class="panel-body">
<%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="form-inputs">
<div class="form-group">
<%= f.input :cpf, required: false, autofocus: true, input_html: { class: 'form-control mascara-cpf' }, placeholder: 'LOGIN', label: false %>
</div>
<div class="form-group">
<%= f.input :password, required: false, input_html: { class: 'form-control' }, placeholder: 'SENHA', label: false %>
</div>
<div class="espaco-check-box-login">
<%= f.input :remember_me, label: 'Lembre-me', as: :boolean if devise_mapping.rememberable? %>
</div>
</div>
<div class="form-actions">
<%= f.button :submit, "Log in", :class => "btn btn-default btn-lg btn-block" %>
</div>
<% end %>
</div>
</div>
</div>
My mask work into form, but save on DB with . and -, because this I cant sign in on system =(
Check this out, it explains how before_validation
works
Defines a callback that will get called right before validation happens.
It won't work because you're trying to do a POST request in a login action, which will not call the before_validation.
What I recommend you to do is unmask the value before the form gets submitted via js, or before the authentication method is called inside your controller.
Hope this helps!