2017-05-14 4 views
2

Ich habe den devise-two-factor Edelstein auf meinem devise Benutzermodell verwendet. Wenn ich versuche, den Edelstein aus dem Modell zu entfernen, ich folgende Fehlermeldung erhalten, wenn ein Benutzer-Datensatz zu erstellen:Rails, Devise: unbekanntes Attribut 'password' für Benutzer

ActiveModel::UnknownAttributeError: unknown attribute 'password' for User. c:/test_app/db/seeds.rb:6:in <top (required)>' bin/rails:4:in require' bin/rails:4:in `'


Hier ist meine vorherige devise Integration in meinem Modell:

devise :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, 
     :omniauthable, 
     :invitable, 
     :two_factor_authenticatable, :two_factor_backupable, 
     :otp_secret_encryption_key => Settings.devise.two_factor.key, 
     :omniauth_providers => [:google_oauth2] 

Und meine aktuelle Integration:

devise :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, 
     :omniauthable, 
     :invitable, 
     :omniauth_providers => [:google_oauth2] 

Mein Samen:

demo_user = User.create(email: '[email protected]', first_name: 'demo', last_name: 'account', password: '12345678', username: 'demo') 
demo_user.encrypted_password 
demo_user.skip_confirmation! 

Wie löscht diese beiden Linien beeinflussen das password Attribut des Modells? Dieses Code-Snippet ist das einzige, was ich geändert habe.

+2

Können Sie Ihre 'db/seeds.rb' Datei auf die Frage hinzufügen? – ArtOfCode

+0

@ArtOfCode Ich habe es zu dem Markup – jonhue

Antwort

2
demo_user = User.create(email: '[email protected]', first_name: 'demo', 
         last_name: 'account', password: '12345678', 
         username: 'demo') 

Da ist dein Problem. Sie versuchen, ein password-Attribut auf einem neuen User festzulegen, aber das Modell User von Devise hat kein password-Attribut.

Devise-Benutzer haben ein encrypted_password-Attribut, das jedoch von Devise generiert wird, wenn ein Benutzer erstellt wird, und Sie sollten wahrscheinlich nicht versuchen, es selbst zu füllen. Es ist keine Methode, die ein password Attribut verschlüsselt.

+0

hinzugefügt Ich glaube nicht, dass dies beabsichtigt ist, da mein Anmeldeformular mit der Standardeingabe 'password' ebenfalls fehlschlägt. – jonhue

+0

Ich weiß immer noch nicht, warum "Passwort" von "Zwei-Faktor" abhängt. Mit dem Juwel funktioniert alles gut. – jonhue

+0

'User.create (E-Mail: '...', Passwort: '12341234', password_confirmation: '12341234')' speichert ein verschlüsseltes Passwort mit Devise. – speedracr

Verwandte Themen