Tratar:
validates_confirmation_of :password, :if => :password_required?
validates :password_confirmation, :presence => true, :if => '!password.nil?'
Tenga en cuenta que la validación solo se activa si password_required?
Devuelve verdadero, y password_required?
devolverá falso si el password_confirmation
El campo es nulo.
Así que para hacer password_confirmation
campo para ser nil, simplemente necesitas eliminar el password_confirmation
El campo del formulario y de esa manera siempre lo obtendrás, evitando así pasar por alto las validaciones.
Soluciones alternativas:
1) Saltar la validación del campo de contraseña
2) Simplemente guarde un número generado seguro al azar en el campo de la contraseña (mejor porque es fácil y también mantiene la consistencia).
self.password = self.password_confirmation = SecureRandom.urlsafe_base64(n=6)
Además, si desea que estos campos sean identificados de manera diferente, como lo ha dejado el usuario, puede darles contraseñas únicas, así que, más tarde, usted impone la condición como:
if(self.password == "something unique" and self.password_confirmation == "something unique")
flash[:notice] = "The user has not password"
end
Luego, en el nivel de UI, simplemente se muestra con en blanco usando la condición anterior.