2017-05-29 16 views
0

私は最近、私のアプリを宝石から手持ちのショッピングカートに切り替えました。私は新しいordersテーブルを作成し、まだ私は私のアプリに取得しようとしたとき、私はというエラーを取得する:私はorder.delete_allを試してみましたRails Delete_Allでもまだid = 5を探しています

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
    helper_method :current_order 

    def current_order 
    if !session[:order_id].nil? 
     Order.find(session[:order_id]) <<<<< THIS LINE 
    else 
     Order.new 
    end 
    end 
end 

ActiveRecord::RecordNotFound at/
Couldn't find Order with 'id'=5 

エラーが私のapplication_controllerのこのビットに呼ばれています私のコントローラでは、それはまだ何かの理由でid=5を探しています。私はdb:drop db:createを試すだろうが、私は失うことはしたくない生産アプリのデータを持っている。

  1. データベースをめちゃくちゃにせずにこのエラーを修正:

    は、いずれかの任意の方法はありますか?

  2. 残りのデータベースを破壊することなくordersテーブルだけを削除/再作成しますか?

また、問題が間違っている可能性があるので、ソリューションが他の場所にあると思ったら教えてください。

答えて

1

この問題は、データベースとはまったく関係ありません。よくほとんど。確かに、db構造を削除/再作成する必要はありません。

session[:order_id]の値はdbにはありません。それはセッションを修正する必要があります。または、見つからないレコードの処理。たとえば、これでエラーは発生しません。

Order.where(id: session[:order_id]).first 
+0

あなたが言っていることは理にかなっていますが、実装方法はわかりません。シークレットモードでこのエラーが発生することはありません。そのため、現在のセッションでの問題です。 – Liz

+0

@Liz:現在のセッションに問題があります。クッキーを落としてよかったです。すべてのユーザーのセッションをリセットするには、[this](https://stackoverflow.com/a/21467250/125816)を実行します。 –

関連する問題