2012-06-02 13 views
18

Jestem nowicjuszem w firmie Devise, który działa poprawnie, używając adresu e-mail jako klucza uwierzytelniającego. Mam jednak przypadek użycia, który wymaga nazwy użytkownika i nie mogę sprawić, żeby działało.Wymyślanie uwierzytelniania za pomocą nazwy użytkownika zamiast adresu e-mail

Dodałem kolumnę ciągów, "username" do tabeli użytkowników, zmieniono pola z: e-mail na: nazwa użytkownika w formularzu logowania i zmieniono klucz uwierzytelniania w devise.rb na: nazwa użytkownika jeszcze Kiedy wchodzę do logowania, otrzymuję następujący komunikat: "Proszę podać adres e-mail".

Co robię źle?

**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

czy zrestartowałeś swoją aplikację szyn? – rb512

+0

Tak, zrestartowany serwer szyny wyciągnął również to, o czym wspomniałeś. Brak przyjemności. – nulltek

Odpowiedz

40

W config/inicjalizatorów/devise.rb Odkomentuj config.authentication_keys = [ :email] i zmienić go na config.authentication_keys = [ :username ]

Aktualizacja:
Formularz na nieprawidłowe.
Zmień f.email_field do f.text_field

+0

Tak to mam ustawić. config.authentication_keys = [: username] – nulltek

+0

Święta krowa, która była głupia. Dziękuję za wskazanie mi tego. Chyba nie powinienem się bawić, gdy jestem zmęczony. – nulltek

+0

Dziękuję .........! –

1
  • Przede wszystkim upewnij się, aby uruchomić migracje.

bundle exec rake db:migrate

  • generowania widoków dla opracowania, inaczej Devise użyje ustawień domyślnych.

rails generate devise:views

  • Zmienić opracować/widoki, ile chcesz (zastępując pole e-mail do pola nazwa użytkownika)

  • Zrestartuj serwer WWW

Nadzieję, że to pomaga!

Powiązane problemy