gpt4 book ai didi

ruby-on-rails - 使用 after_update 方法的 Rails 堆栈级别太深

转载 作者:行者123 更新时间:2023-12-04 06:27:41 25 4
gpt4 key购买 nike

我正在努力做到这一点,如果用户更改了两个 bool 变量(buyerseller)中的任何一个,它们可以在任一方向进行更改以触发action) 它将第三个变量 status_confirmed 的状态重置为 false

我的 user 模型中有以下内容:

after_update :reset_confirmed

def reset_confirmed
if self.buyer_changed? || self.seller_changed?
self.update_attributes(status_confirmed: false)
end
end

据我所知,stack level too deep 错误是由于我找不到的无限循环或递归造成的。谁能看出我哪里出错了?

最佳答案

两种处理方法:

after_update :reset_confirmed
def reset_confirmed
self.update_column(:status_confirmed, false) if self.buyer_changed? || self.seller_changed?
end

update_attributeupdate_column 之间的区别会对您有所帮助,因为后者 skips 回调(如果有)。

before_save  :reset_confirmed
def reset_confirmed
self.status_confirmed = false if self.buyer_changed? || self.seller_changed?
end

在这里,您只是在将其保存到 db 之前分配一个值,所以...

希望对你有帮助..

关于ruby-on-rails - 使用 after_update 方法的 Rails 堆栈级别太深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43797001/

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