1. ホーム
  2. ruby-on-rails

[解決済み] railsアプリケーションでCookieのオーバーフロー?

2022-02-07 14:55:03

質問

<ブロッククオート

UsersController#create で ActionDispatch::Cookies::CookieOverflow が発生する。

ページを開こうとすると、このようなエラーが発生します。このエラーをデバッグする方法がわかりません。この問題に対して何か提案はありますか?

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

解決方法は?

Railsがオブジェクトをテキストに変換してCookieに書き込むと、おそらくその制限を超える大きさになります。

ルビーオンレイルズ ActionDispatch::Cookies::CookieOverflow エラー

その方法この CookieOverflow エラーが発生します。

この問題を解決する最も簡単な方法は、session_store を変更して cookie_store . を使用することができます。 active_record_store を例にとって説明します。

以下はその手順です。

  1. セッションテーブルを作成するマイグレーションを生成する

    rake db:sessions:create
    
    
  2. マイグレーションを実行する

    rake db:migrate
    
    
  3. 修正 config/initializers/session_store.rb から

    (App)::Application.config.session_store :cookie_store, :key => 'xxx'
    
    

    になります。

    (App)::Application.config.session_store :active_record_store
    
    

3つのステップを実行したら、アプリケーションを再起動します。Railsはセッションデータを保存するためにsessionsテーブルを使用するようになります。 で、4kbの制限はありません。