Jor*_*vas 5 ruby stack-overflow ruby-on-rails
删除记录时出现 Stack Overflow 错误:
\n\n\n\n\nSystemStackError(堆栈级别太深):\n app/controllers/orders_controller.rb:18:in `destroy\'
\n
我发现了另一个与 ruby 相关的系统堆栈错误,但我没有完全了解如何修复它,因为我的问题略有不同。
\n\n在这里:Ruby,堆栈级别太深(SystemStackError)
\n\n这是方法,第二行导致错误:
\n\ndef 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\nRun 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从项目关联中删除应该可以解决循环错误/堆栈级别太深的问题。