2012-06-02 2 views
18

Ich bin neu bei Devise und funktioniert einwandfrei, indem ich eine E-Mail-Adresse als Authentifizierungsschlüssel verwende. Allerdings habe ich einen Anwendungsfall, der stattdessen einen Benutzernamen erfordert, und ich kann nicht scheinen, dass es funktioniert.Authentifizieren mit Benutzername anstelle von E-Mail

Ich habe eine Stringspalte, "username" zur Benutzertabelle hinzugefügt, die Felder von: email zu: username im Anmeldeformular geändert und den Authentifizierungsschlüssel in devise.rb zu: username noch geändert Wenn ich mich anmelde, wird mir folgende Aufforderung angezeigt: "Bitte geben Sie eine E-Mail-Adresse ein".

Was mache ich falsch?

**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 ] 
+0

hast du deine Rails App neu gestartet? – rb512

+0

Ja, neu gestartet Rails Server zog auch, was Sie erwähnt. Keine Freude. – nulltek

Antwort

40

In Ihrem config/initializers/devise.rb uncomment config.authentication_keys = [ :email] und verändern config.authentication_keys = [ :username ]

Update:
falsch Ihre Form ist.
ändern f.email_field zu f.text_field

+0

So habe ich es eingestellt. config.authentication_keys = [: username] – nulltek

+0

Heilige Kuh, das war dumm. Danke, dass du es mir gezeigt hast. Ich denke, ich sollte nicht mit Sachen spielen, wenn ich müde bin. – nulltek

+0

Vielen Dank .........! –

1
  • Zunächst einmal stellen Sie sicher, die Migrationen laufen.

bundle exec rake db:migrate

  • Generieren Sie die Ansichten für Devise, andernfalls entwickeln, um die Standardwerte verwenden.

rails generate devise:views

  • Ändern Sie die Devise/Ansichten, wie Sie wollen (als Ersatz für E-Mail-Feld Feld Benutzername)

  • Starten Sie den Webserver

Hoffe, es hilft!

Verwandte Themen