ruby-on-rails - 删除记录时的 SystemStackError(堆栈级别太深)

标签 ruby-on-rails ruby stack-overflow

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

SystemStackError (stack level too deep): app/controllers/orders_controller.rb:18:in `destroy'

我发现了另一个与 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

从 Item 关联中删除 dependent: :destroy 应该可以解决循环错误/堆栈级别太深的问题。

关于ruby-on-rails - 删除记录时的 SystemStackError(堆栈级别太深),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39091296/

相关文章:

ruby - 如何使用 RSpec 测试具有默认参数的 Ruby 类

ruby-on-rails - Rails 和 Rake 命令挂起并且什么都不做

ruby-on-rails - 如何让这个 ruby​​ on rails 应用程序将文件复制到我的硬盘?

ruby-on-rails - `merge' :string <%= form_for %> helper 的未定义方法 '####'

ruby-on-rails - Rails 中 AMP 表单的 header 设置

c# - 捕获 StackOverflowException

Mysql::错误:表 'table_name' 被标记为崩溃,应该修复

ruby-on-rails - 使用 Ionic 进行 fb 登录的 Rails API

java - lucene 3.5.0 索引时出现堆栈溢出错误

java - stackoverflow 和 arrayindexoutofbounds 有什么区别?