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

时间:2016-08-23 02:13:01

标签: ruby-on-rails ruby stack-overflow

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

  

SystemStackError(堆栈级别太深):     app / controllers / orders_controller.rb:18:在`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

我可以更改什么来解决此问题?

1 个答案:

答案 0 :(得分:3)

当您尝试删除具有声明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应解决圆形错误/堆栈级别太深。