tutorial tokens sesiones rails con auth autenticacion ruby-on-rails devise

ruby on rails - tokens - Diseñe la autenticación con nombre de usuario en lugar de correo electrónico



ruby on rails tokens (2)

En su config / initializers / devise.rb descomente config.authentication_keys = [ :email] y cámbielo a config.authentication_keys = [ :username ]

Actualizar:
Tu forma es incorrecta.
Cambie f.email_field a f.text_field

Soy nuevo en Devise y lo estoy trabajando bien al usar una dirección de correo electrónico como clave de autenticación. Sin embargo, tengo un caso de uso que requiere un nombre de usuario en su lugar y parece que no puedo hacerlo funcionar.

Agregué una columna de cadena, "nombre de usuario" a la tabla de usuarios, cambié los campos de: correo electrónico a: nombre de usuario en el formulario de inicio de sesión, y cambié la clave de autenticación en devise.rb a: nombre de usuario aún cuando voy a iniciar sesión Me encontré con este mensaje: "Por favor, introduzca una dirección de correo electrónico".

¿Qué estoy haciendo mal?

**new.html.erb** <div><%= f.label :username %><br /> <%= f.email_field :username %></div> **User.rb** class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:username] # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me, :username # attr_accessible :title, :body end **devise.rb** config.authentication_keys = [ :username ]


  • En primer lugar, asegúrese de ejecutar las migraciones.

bundle exec rake db:migrate

  • Genere las vistas para Devise, de lo contrario, Devise utilizará los valores predeterminados.

rails generate devise:views

  • Cambia los diseños / vistas como quieras (reemplazando el campo de correo electrónico por el campo de nombre de usuario)

  • Reiniciar el servidor web

¡Espero eso ayude!