DangerousAttributeError in OmniAuth Railscast Lernprogramm: create wird von ActiveRecord definiert

8

Ich habe ActiveRecord :: DangerousAttributeError und andere ähnliche Threads auf SO angeschaut, aber sie behandeln nicht die gleiches Problem.

Ich folge dem Omnium-Tutorial: Ссылка

Ich kann mich über OAUTH mit Twitter authentifizieren und die Benutzerdaten (Auth) zurückgeben. Das Problem ist, dass ich wegen dieser Fehlermeldung nicht in der Datenbank (sqlite3) erstellen / speichern kann.

Fehler:

%Vor%

Authentication_Controller:

%Vor%

Modelle:

%Vor%

Wie bearbeite ich diesen Fehler? Googlen auf dieser Seite und anderen hilft mir nicht zu verstehen, was los ist, um es zu beheben. Danke

    
xta 19.04.2012, 03:30
quelle

4 Antworten

4

Activerecord warnt Sie, dass einige Ihrer Datenbankattributnamen (create usw.) mit den Namen der von activerecord / ruby ​​bereitgestellten Instanzmethoden kollidieren.

Da rails sonst Instanzmethoden dieser Namen für den Zugriff auf Attribute erstellen würden, hat ein solcher Konflikt wirklich seltsame Dinge verursacht. Der aktive Datensatz löst also eine Ausnahme aus, um Sie zu warnen, dass dies geschieht.

    
Frederick Cheung 19.04.2012, 15:43
quelle
8

Ich bin gerade in das folgende RailsCast gelaufen.

Das Tutorial sagt zum Ausführen:

%Vor%

Aber ich hatte nicht die raffinierten Gerüste auf meiner Maschine, ich rannte einfach

%Vor%

Was verhält sich anders? Anstatt Stub-Index-, Create- und Destroy-Controller-Methoden zu erstellen, wurden Felder in der Datenbank erstellt.

Entfernen Sie sie und es funktioniert gut, wie bereits erwähnt.

    
Ryan Yeske 14.06.2012 05:14
quelle
4

Um also die Frage zu beenden, müssen Sie eine Migration mit diesem Befehl erstellen:

%Vor%

Das sieht in etwa so aus:

%Vor%

Und führen Sie es mit dem üblichen:

%Vor%

Oder alternativ können Sie Folgendes ausführen:

%Vor%

Um die Änderungen rückgängig zu machen, die gerade an der Datenbank vorgenommen wurden:

%Vor%

Um alle Dateien zu entfernen, führen Sie:

%Vor%

Und mach die anderen Sachen manuell

Ich habe übrigens genau das Gleiche gemacht.

    
zode64 27.09.2012 02:13
quelle
1

Versuchen Sie: current_user.authentications.create!

BEARBEITEN

Im Grunde genommen bestand Ihr Problem darin, dass Sie Spalten in Ihrer Tabelle hatten, die dieselben Namen hatten wie die Methoden der Modal-Klasse.

Sie können in Ihrer Datenbank keine Spalte namens create or destroy haben.

Wahrscheinlich war es ein Tippfehler bei Ihrer Modell / Controller-Generation.

    
Eric Sites 19.04.2012 03:43
quelle