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.
Wie bearbeite ich diesen Fehler? Googlen auf dieser Seite und anderen hilft mir nicht zu verstehen, was los ist, um es zu beheben. Danke
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.
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.
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.
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.
Tags und Links ruby ruby-on-rails activerecord omniauth railscasts