ActionDispatch :: Cookies :: CookieOverflow dans UsersController # create
J'ai cette erreur lorsque j'essaye d'ouvrir la page. Je ne sais pas comment déboguer cette erreur. Avez-vous des suggestions pour ce problème?
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
érogol
la source
la source
Devise
et je n'avais pas redémarré mon serveur de développement après avoir exécuté les migrations. Une fois que je l'ai fait, l'erreur s'est arrêtée.Réponses:
Vous avez une limite de 4 Ko sur ce que vous pouvez stocker dans un cookie, et lorsque Rails convertit votre objet en texte pour l'écrire dans le cookie, il est probablement plus grand que cette limite.
ActionDispatch::Cookies::CookieOverflow
Erreur Ruby on RailsDe cette façon, cette
CookieOverflow
erreur se produit.Le moyen le plus simple de résoudre celui-ci est de changer votre session_store et de ne pas utiliser le fichier
cookie_store
. Vous pouvez utiliser l'active_record_store
exemple par.Voici les étapes
Générer une migration qui crée la table de session
Exécutez la migration
Modifier à
config/initializers/session_store.rb
partir deà
Une fois que vous avez effectué les trois étapes, redémarrez votre application. Rails utilisera désormais la table des sessions pour stocker les données de session, et vous n'aurez pas la limite de 4 Ko.
la source
active_record_store
bijou?Pour que la
:active_record_store
fonctionnalité fonctionne dans Rails 4/5, vous devez ajouter le gem activerecord-session_store à votreGemfile
:puis exécutez le générateur de migration:
Et enfin, configurez votre magasin de session dans
config/initializers/session_store.rb
:METTRE À JOUR:
Si quelqu'un reçoit un
null value in column "session_id" violates not-null constraint
message dans les rails 4, il existe une solution de contournement dans github (non testée). Vous devez créer un initialiseur avecActiveRecord::SessionStore::Session.attr_accessible :data, :session_id
la source
ERROR: null value in column "session_id" violates not-null constraint
Si vous voyez cela, vérifiez que vous ne gonflez pas certaines données de session. Dans mon cas, c'était des milliers du même message pompé dans le message flash. Juste dire.
J'ajouterai que si vous pensez que la solution est d'agrandir votre magasin de cookies (comme la plupart des autres adresses de réponses), vous feriez probablement mieux de repenser ce que vous mettez réellement dans les cookies. Si vous avez besoin de plus de quelques jetons d'authentification, d'identifiants de session et peut-être de quelques cookies de mise en page / suivi, vous vivez dans les années 90.
la source
Ce n'est pas une bonne idée de stocker un objet modèle dans la session.
Découvrez ce railscast sur ce sujet: http://railscasts.com/episodes/13-dangers-of-model-in-session?autoplay=true
Il est préférable de stocker l'identifiant (l'identifiant de l'utilisateur dans ce cas) dans la session. Alors vous n'aurez pas ce problème.
(Voir également le commentaire de Frederick Cheung ci-dessus).
la source
le message d'erreur indique clairement le problème avec la taille du magasin de cookies qui déborde.
Vos sessions (par défaut dans le cookie) doivent être déplacées vers Active Record Store ou Memcache Store pour résoudre ce problème.
Pour les sessions basées sur les données:
Vous devez créer la table de session comme ci-dessous
OU
Pour les sessions Memcache:
Vous devez également configurer un serveur de cache mémoire et le configurer comme ci-dessous:
la source
Cette erreur est due au fait que vous essayez de sérialiser le modèle utilisateur Lors du stockage d'un objet dans un cookie, les rails utiliseront Marshal.dump, ce qui peut produire une grande quantité de contenu, car tout se trouve sur l'enregistrement utilisateur
Au lieu de stocker l'enregistrement d'utilisateur réel avec
session[:current_user] = user
essayez simplement de stocker l'ID de l'utilisateur, alors ayez une méthode une méthode pour rechercher l'utilisateur à partir de cela, par exemplela source
Cette erreur est apparue pour moi lorsque j'exécutais des spécifications. Après avoir mis à jour Capybara de 1.x à 2.x. Juste râteau tmp: clear l'a résolu.
la source