删除记录时出现SystemStackError(堆栈级别太深)

Jor*_*vas 5 ruby stack-overflow ruby-on-rails

删除记录时出现 Stack Overflow 错误:

\n\n
\n

SystemStackError(堆栈级别太深):\n app/controllers/orders_controller.rb:18:in `destroy\'

\n
\n\n

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

\n\n

在这里:Ruby,堆栈级别太深(SystemStackError)

\n\n

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

\n\n
def destroy\n@order = Order.find(params[:id]).destroy\nflash.now[:success] = true\nflash.now[:success_title] = "\xc2\xa1Orden eliminada!"\nflash.now[:succes_message] = "La orden #{@order.id} fue eliminada."\nrespond_to do |format|\n  format.html {redirect_to orders_path}\n  format.js {}\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以改变什么来解决这个问题?

\n

小智 6

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

例子:

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

class Item < ActiveRecord::Base
  belongs_to :order, dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)

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