I suppose you have to handle ActiveRecord::RecordNotFound
error:
def current_cart
if session[:cart_id]
begin
@current_cart ||= Cart.find(session[:cart_id])
session[:cart_id] = nil if @current_cart.purchased_at
rescue ActiveRecord::RecordNotFound => e
create_cart
end
else
create_cart
end
@current_cart
end
def create_cart
@current_cart = Cart.create!
session[:cart_id] = @current_cart.id
end
This could be caused by invalid session data.