traducir inglés ingles español cómo ruby-on-rails registration devise

ruby on rails - inglés - deshabilitar la confirmación de la contraseña durante el registro cuando se utiliza el dispositivo



cómo se dice en inglés (9)

Estoy usando Devise for Rails. En el proceso de registro predeterminado, Devise requiere que los usuarios escriban la contraseña dos veces para la validación y la autenticación. ¿Cómo puedo desactivarlo?

Gracias a todos. :)


Creo que esta es la forma sencilla de deshabilitar la confirmación de contraseña: https://github.com/plataformatec/devise/wiki/Disable-password-confirmation-during-registration

Algunos usuarios quieren que el proceso de registro sea más corto y más fácil. Uno de los campos que se pueden eliminar es la confirmación de la contraseña.

La solución más sencilla es: simplemente puede eliminar el campo password_confirmation del formulario de registro ubicado en devise / registrations / new.html.erb (new.html.haml si está usando HAML), ¡lo cual desactiva la necesidad de confirmar la contraseña completamente!

La razón de esto radica en lib / devise / models / validatable.rb en la fuente de Devise:

Tenga en cuenta que la validación solo se activa si se solicita una contraseña? devuelve true, y password_required? devolverá false si el campo password_confirmation es nil.

Debido a que el campo password_confirmation está presente en el formulario, siempre se incluirá en el hash de parámetros, como una cadena vacía si se deja en blanco, se activa la validación. Sin embargo, si elimina la entrada del formulario, la contraseña_confirmación en los parámetros será nula y, por lo tanto, la validación no se activará.


La solución más simple:

Eliminar : validable de

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :confirmable, :timeoutable, :validatable

;)


Las validaciones predeterminadas de Devise ( lib / devise / models / validatable.rb ):

validates_confirmation_of :password, :if => :password_required?

y método:

def password_required? !persisted? || !password.nil? || !password_confirmation.nil? end

Necesitamos anular la validación de contraseña predeterminada de Devise. Coloque el siguiente código al final para que no sea anulado por ninguna de las configuraciones de Devise.

validates_confirmation_of :password, if: :revalid def revalid false end

Y tu modelo se vería así:

class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :confirmable, :timeoutable, :validatable validates_confirmation_of :password, if: :revalid def revalid false end end

A continuación, elimine el campo password_confirmation del formulario de registro.


No estoy familiarizado con Devise, pero si tiene acceso al modelo en el controlador antes de guardar / validar, podría hacer algo como lo siguiente

model.password_confirmation = model.password model.save


Parece que si simplemente elimina el requisito attr_accessible del modelo, funciona bien sin él.

En una nota al margen, estoy de acuerdo con esta práctica, en el caso poco frecuente de que haya un error tipográfico, el usuario puede simplemente usar la recuperación de la contraseña para recuperar su contraseña.


Por el bien de los usuarios de Rails 4 que encuentran esta pregunta, simplemente elimine :password_confirmation de los parámetros permitidos, que declara en ApplicationController.rb .

before_filter :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) do |u| u.permit(:username, :email, :password) end devise_parameter_sanitizer.for(:account_update) do |u| u.permit(:username, :email, :password) end end


Solo necesita eliminar el campo password_confirmation de su formulario.



Llegué un poco tarde a esta fiesta, pero después de haber estado rascándome la cabeza por el mismo problema durante la última hora, pensé en compartir la solución más fácil que he encontrado: simplemente puede eliminar el campo password_confirmation de El formulario de registro, que desactiva la necesidad de confirmar la contraseña por completo!

La razón de esto radica en lib/devise/models/validatable.rb en la fuente de Devise:

module Devise module Models module Validatable def self.included(base) base.class_eval do #....SNIP... validates_confirmation_of :password, :if => :password_required? end end #...SNIP... def password_required? !persisted? || !password.nil? || !password_confirmation.nil? end end end end

Tenga en cuenta que la validación solo se activa si se solicita una password_required? devuelve true , y password_required? devolverá false si el campo password_confirmation es nil .

Debido a que el campo password_confirmation está presente en el formulario, siempre se incluirá en el hash de parámetros, como una cadena vacía si se deja en blanco, se activa la validación. Sin embargo, si elimina la entrada del formulario, la password_confirmation en los parámetros será nil y, por lo tanto, la validación no se activará.

Espero que esto sea útil!

Gracias,

Tim