我的登录表单和我的js面具都没问题。但是我把代码放在哪里:
cpf.gsub!(/(\.|\-)/, "")
对于面具工作?
我需要生成设备控制器才能登录或只是模型?我需要用户模型:
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
但它只适用于注册用户,不要登录。 我的登录是:
<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>
我的蒙版工作形式,但保存在DB上。 - - 因为我无法登录系统=(
答案 0 :(得分:1)
检查this,它解释了before_validation
如何运作
定义将在验证之前调用的回调 发生的情况。
它不会起作用,因为您正在尝试在登录操作中执行POST请求,而该操作不会调用before_validation。
我建议你做的是在通过js提交表单之前,或者在控制器中调用身份验证方法之前取消屏蔽值。
希望这有帮助!
答案 1 :(得分:0)
根据设计文档,一个好方法是覆盖user.db中的登录查询,如:
def self.find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
if cpf = conditions.delete(:cpf)
logger.debug cpf.gsub!(/[^\d]/, '')
where(conditions).where(["cpf = :value", { :value => cpf }]).first
end