Concevoir l'authentification avec nom d'utilisateur au lieu de l'e-mail
Je suis nouveau à Concevoir et d'avoir de travail fine à l'aide d'une adresse électronique comme la clé d'authentification. Cependant, j'ai un cas d'utilisation qui nécessite un nom d'utilisateur à la place et je n'arrive pas à le faire fonctionner.
J'ai ajouté une colonne de type chaîne, "nom d'utilisateur" à la table des utilisateurs, a changé les champs à partir de :courriel :nom d'utilisateur dans le formulaire de connexion, et ont changé la clé d'authentification à concevoir.rb à :nom d'utilisateur et pourtant quand je vais à la signer, je suis rencontré avec cette invite: "Veuillez entrer une adresse e-mail".
Ce que je fais 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 ]
- avez-vous redémarrer votre application rails?
- Oui, redémarrage de serveur rails également retiré ce que vous avez mentionné. Pas de joie.
Vous devez vous connecter pour publier un commentaire.
Dans votre config/initializers/concevoir.rb décommentez
config.authentication_keys = [ :email]
et de le modifier pourconfig.authentication_keys = [ :username ]
mise à Jour:
Votre forme est incorrecte.
Changement
f.email_field
àf.text_field
scoped_views
, vous pouvez déplacer les clés d'authentification au niveau du modèle à l'aide dedevise authentication_keys => [:email]
bundle exec rake db:migrate
rails generate devise:views
Changer le Concevoir/vues que vous le souhaitez (le remplacement de l'email de champ à champ nom d'utilisateur)
Redémarrer le serveur web
Espère que cela aide!