Rails Delete_All但仍在寻找id = 5

时间:2017-05-29 20:16:23

标签: ruby-on-rails

我最近将我的应用从宝石切换到了手动购物车。我创建了一个新的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,但我有关于我不想丢失的制作应用的数据。

有没有办法:

  1. 修复此错误而不会弄乱数据库?

  2. 只删除/重新创建订单表,而不会破坏数据库的其余部分?

  3. 另外,我可能会错误地阅读这个问题,所以如果你认为解决方案存在其他地方,请告诉我。

1 个答案:

答案 0 :(得分:1)

问题根本与数据库无关。好吧,差不多。当然,没有什么需要删除/重新创建数据库结构。

您的session[:order_id]的值不在数据库中。这就是您需要解决的问题,即会话。或者您处理未找到的记录。例如,这不会引发错误。

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