删除记录时出现系统堆栈错误(堆栈级别太深) [英] SystemStackError (stack level too deep) when deleting a record

查看:20
本文介绍了删除记录时出现系统堆栈错误(堆栈级别太深)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

删除记录时出现堆栈溢出错误:

SystemStackError(堆栈级别太深): APP/Controlders/Orders_Controler.rb:18:在`销毁‘中

我发现了另一个与Ruby相关的系统堆栈错误,但我没有完全了解如何修复它,因为我的问题略有不同。

在这里:Ruby, stack level too deep (SystemStackError)

这是方法,第二行导致错误:

def destroy
@order = Order.find(params[:id]).destroy
flash.now[:success] = true
flash.now[:success_title] = "¡Orden eliminada!"
flash.now[:succes_message] = "La orden #{@order.id} fue eliminada."
respond_to do |format|
  format.html {redirect_to orders_path}
  format.js {}
end

我可以更改哪些内容来解决此问题?

推荐答案

尝试删除具有声明dependent: :destroy相互链接的关系的记录时,发生堆栈级别太深错误。

示例:

class Order < ActiveRecord::Base
  has_many :items, dependent: :destroy
end

class Item < ActiveRecord::Base
  belongs_to :order, dependent: :destroy
end

从项关联中删除dependent: :destroy应该会解决太深的循环错误/堆栈级别。

这篇关于删除记录时出现系统堆栈错误(堆栈级别太深)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆