ActionDispatch :: Cookies :: CookieOverflow в UsersController # create
У меня эта ошибка возникает при попытке открыть страницу. Я не знаю, как отладить эту ошибку. У вас есть предложения по этой проблеме?
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
эрогол
источник
источник
Devise
и не перезапускал сервер разработки после выполнения миграции. Как только я это сделал, ошибка прекратилась.Ответы:
У вас есть ограничение в 4 КБ на то, что вы можете хранить в cookie, и когда Rails конвертирует ваш объект в текст для записи в cookie, он, вероятно, превышает этот предел.
Рубин на рельсах
ActionDispatch::Cookies::CookieOverflow
ОшибкаТаким образом, это
CookieOverflow
возникает ошибка.Самый простой способ решить эту проблему - вам нужно изменить свой session_store и не использовать
cookie_store
. Вы можете использоватьactive_record_store
пример.Вот шаги
Создайте миграцию, которая создает таблицу сеанса
Запустите миграцию
Изменить
config/initializers/session_store.rb
изк
Выполнив три шага, перезапустите приложение. Rails теперь будет использовать таблицу сеансов для хранения данных сеанса, и у вас не будет ограничения в 4 КБ.
источник
active_record_store
драгоценный камень?Чтобы
:active_record_store
функциональность работала в Rails 4/5, вы должны добавить гем activerecord-session_store в свойGemfile
:затем запустите генератор миграции:
И, наконец, установите хранилище сеансов
config/initializers/session_store.rb
:ОБНОВИТЬ:
Если кто-то получает
null value in column "session_id" violates not-null constraint
сообщение в rails 4, есть обходной путь в github (не тестировался). Вы должны создать инициализатор сActiveRecord::SessionStore::Session.attr_accessible :data, :session_id
источник
ERROR: null value in column "session_id" violates not-null constraint
Если вы видите это, убедитесь, что вы не увеличиваете данные сеанса. В моем случае это были тысячи одинаковых сообщений, закачанных во флеш-сообщение. Просто говорю.
Я добавлю, что если вы думаете, что решение состоит в том, чтобы увеличить хранилище файлов cookie (как и большинство других ответов), вам, вероятно, лучше переосмыслить, что вы фактически вставляете в файлы cookie. Если вам нужно более пары токенов аутентификации, идентификаторов сеансов и, возможно, несколько файлов cookie макета / отслеживания, вы живете в 90-х годах.
источник
Не рекомендуется хранить объект модели в сеансе.
Посмотрите этот выпуск по этой теме: http://railscasts.com/episodes/13-dangers-of-model-in-session?autoplay=true
Лучше хранить идентификатор (в данном случае идентификатор пользователя) внутри сеанса. Тогда у вас не будет этой проблемы.
(См. Также комментарий Фредерика Ченга выше).
источник
сообщение об ошибке ясно указывает на проблему с переполнением размера хранилища файлов cookie.
Ваши сеансы (по умолчанию в файлах cookie) необходимо переместить в хранилище активных записей или хранилище кэша памяти, чтобы решить эту проблему.
Для сеансов на основе данных:
Вам необходимо создать таблицу сеанса, как показано ниже
ИЛИ
Для сессий Memcache:
Также вам необходимо настроить сервер кеширования памяти и настроить его, как показано ниже:
источник
Эта ошибка возникает из-за того, что вы пытаетесь сериализовать модель пользователя. При сохранении объекта в файле cookie rails будет использовать Marshal.dump, который может создавать большой объем контента, поскольку это все, что находится в записи пользователя.
Вместо того, чтобы хранить фактическую запись пользователя,
session[:current_user] = user
попробуйте просто сохранить идентификатор пользователя, а затем используйте метод, чтобы найти пользователя из этого, напримеристочник
Эта ошибка появилась у меня, когда я запускал спецификации. После обновления Capybara с 1.x до 2.x. Просто грабли tmp: clear решил это.
источник