ActionDispatch :: Cookies :: CookieOverflow in UsersController # create
Ich habe diesen Fehler, wenn ich versuche, die Seite zu öffnen. Ich weiß nicht, wie ich diesen Fehler beheben soll. Haben Sie einen Vorschlag für dieses Problem?
def create
@user = User.new(params[:user])
sign_in @user
if @user.save
@user.folders.create(:folder_name=>"Default Folder", :user_id=>@user.id)
flash[:success] = "Welcome to Bunch<it>! "
redirect_to @user
else
@title = "Sign up"
render 'new'
end
end
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
session[:current_user] = user
current_user = user
end
ruby-on-rails
erogol
quelle
quelle
Devise
und meinen Entwicklungsserver nach dem Ausführen der Migrationen nicht neu gestartet. Sobald ich dies tat, hörte der Fehler auf.Antworten:
Sie haben ein Limit von 4 KB für das, was Sie in einem Cookie speichern können, und wenn Rails Ihr Objekt zum Schreiben in das Cookie in Text konvertiert, ist es wahrscheinlich größer als dieses Limit.
Ruby on Rails
ActionDispatch::Cookies::CookieOverflow
FehlerAuf diese Weise das
CookieOverflow
Fehler auf.Der einfachste Weg, dieses Problem zu lösen, besteht darin, dass Sie Ihren session_store ändern müssen und den nicht verwenden
cookie_store
. Sie können dasactive_record_store
Beispiel verwenden.Hier sind die Schritte
Generieren Sie eine Migration, die die Sitzungstabelle erstellt
Führen Sie die Migration aus
Ändern
config/initializers/session_store.rb
vonzu
Wenn Sie die drei Schritte ausgeführt haben, starten Sie Ihre Anwendung neu. Rails verwendet jetzt die Sitzungstabelle zum Speichern von Sitzungsdaten, und Sie haben nicht das 4-KB-Limit.
quelle
active_record_store
Edelstein?Damit die
:active_record_store
Funktionalität in Rails 4/5 funktioniert, müssen Sie das Juwel activerecord-session_store zu IhremGemfile
:Führen Sie dann den Migrationsgenerator aus:
Und schließlich stellen Sie Ihren Sitzungsspeicher ein in
config/initializers/session_store.rb
:AKTUALISIEREN:
Wenn jemand
null value in column "session_id" violates not-null constraint
in Rails 4 eine Nachricht empfängt , gibt es eine Problemumgehung in Github (nicht getestet). Sie müssen einen Initialisierer mit erstellenActiveRecord::SessionStore::Session.attr_accessible :data, :session_id
quelle
ERROR: null value in column "session_id" violates not-null constraint
Wenn dies angezeigt wird, stellen Sie sicher, dass einige Sitzungsdaten nicht in die Luft gesprengt werden. In meinem Fall wurden Tausende derselben Nachricht in die Flash-Nachricht gepumpt. Nur sagen.
Ich füge hinzu, wenn Sie der Meinung sind, dass die Lösung darin besteht, Ihren Cookie-Speicher zu vergrößern (wie die meisten anderen Antworten), sollten Sie wahrscheinlich besser überdenken, was Sie tatsächlich in Cookies einfügen. Wenn Sie mehr als ein paar Authentifizierungstoken, Sitzungs-IDs und möglicherweise ein paar Layout- / Tracking-Cookies benötigen, leben Sie in den 90er Jahren.
quelle
Es ist keine gute Idee, ein Modellobjekt in der Sitzung zu speichern.
Schauen Sie sich diesen Railscast zu diesem Thema an: http://railscasts.com/episodes/13-dangers-of-model-in-session?autoplay=true
Es ist besser, die ID (in diesem Fall die Benutzer-ID) in der Sitzung zu speichern. Dann haben Sie dieses Problem nicht.
(Siehe auch den Kommentar von Frederick Cheung oben).
quelle
Die Fehlermeldung zeigt deutlich das Problem mit der Größe des Cookie-Speichers an, das überläuft.
Ihre Sitzungen (standardmäßig in Cookies) müssen in den aktiven Datensatzspeicher oder Memcache-Speicher verschoben werden, um dieses Problem zu beheben.
Für Datenbanksitzungen:
Sie müssen die Sitzungstabelle wie folgt erstellen
ODER
Für Memcache-Sitzungen:
Außerdem müssen Sie einen Mem-Cache-Server einrichten und wie folgt konfigurieren:
quelle
Dieser Fehler liegt daran, dass Sie versuchen, das Benutzermodell zu serialisieren. Wenn Sie ein Objekt in einem Cookie speichern, verwenden Rails Marshal.dump das eine große Menge an Inhalten erzeugen kann, da alles im Benutzerdatensatz enthalten ist
Anstatt den tatsächlichen Benutzerdatensatz mit dem
session[:current_user] = user
Versuch zu speichern, nur die Benutzer-ID zu speichern, haben Sie eine Methode, mit der Sie den Benutzer nachschlagen können, zquelle
Dieser Fehler trat bei mir auf, als ich eine Spezifikation ausführte. Nach dem Update von Capybara von 1.x auf 2.x. Harken Sie einfach tmp: klar gelöst.
quelle