我最近将我的应用从宝石切换到了手动购物车。我创建了一个新的orders
表,但当我尝试进入我的应用程序时,我收到一条错误消息:
ActiveRecord::RecordNotFound at /
Couldn't find Order with 'id'=5
我的application_controller
:
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
我在我的控制器中尝试了order.delete_all
,但由于某种原因,它仍然在寻找id=5
。我会尝试db:drop db:create
,但我有关于我不想丢失的制作应用的数据。
有没有办法:
修复此错误而不会弄乱数据库?
只删除/重新创建订单表,而不会破坏数据库的其余部分?
另外,我可能会错误地阅读这个问题,所以如果你认为解决方案存在其他地方,请告诉我。
答案 0 :(得分:1)
问题根本与数据库无关。好吧,差不多。当然,没有什么需要删除/重新创建数据库结构。
您的session[:order_id]
的值不在数据库中。这就是您需要解决的问题,即会话。或者您处理未找到的记录。例如,这不会引发错误。
Order.where(id: session[:order_id]).first