gpt4 book ai didi

ruby-on-rails - 模型中的 SystemStackError(堆栈级别太深)

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:20 26 4
gpt4 key购买 nike

不确定为什么会这样??还是菜鸟..

我只是在保存记录之前更新 Mine 表中的一个字段。所有变量都被准确地引入了。下面的行也返回了它应该的内容。

CreateFulfillmentService::NON_US_MARKETPLACES.include?(self.marketplace)

selfMine 的实例。 self.marketplace 返回正确的市场。

这是我的 Controller

class Mine < ActiveRecord::Base
belongs_to :shop
validates :merchant_id, presence: true
validates :auth_token, presence: true
before_save :assign_three_speed

def assign_three_speed
if CreateFulfillmentService::NON_US_MARKETPLACES.include?(self.marketplace)
self.update(three_speed: false)
else
self.update(three_speed: true)
end
end

end

我哪里误入歧途了?

最佳答案

before_save 是一个回调。每次您保存 Mine 的实例时它都会运行。

assign_three_speed 中,您调用了 self.update,它最终调用了 save。该保存调用会触发另一个回调周期,并且该循环会一直持续下去(直到它因 SystemStackError 退出)。

尝试在回调中分配 three_speed(而不是更新)。更改将持久保存到数据库中,因为分配发生在模型保存之前。

def assign_three_speed
if CreateFulfillmentService::NON_US_MARKETPLACES.include?(self.marketplace)
self.three_speed = false
else
self.three_speed = true
end
end

关于ruby-on-rails - 模型中的 SystemStackError(堆栈级别太深),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39539466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com