gpt4 book ai didi

ruby-on-rails - rails 4 : after_update callback leads to endless loop

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

我在我的用户模型中使用 after_update 回调。

模型用户.rb

after_update :check_phone

check_phone
phone_validation if phone_changed?
end

def phone_validation
code = Array.new(8){rand(36).to_s(36)}.join
self.phone_verification_code = code
self.save
end

但是,这会导致无限循环。问题是在 phone_validation 方法中的 self.save 之后再次调用了回调。 phone_changed? 显然仍然返回 true。我该如何改变这种行为?

最佳答案

试试这个:

用户.rb

attr_accessor  :phone_checked

after_update :check_phone, :unless => "phone_checked"

check_phone
phone_validation if phone_changed?
end

def phone_validation
code = Array.new(8){rand(36).to_s(36)}.join
self.phone_verification_code = code
self.phone_checked = true # update flag
self.save
end

谨慎使用: skip callbacks

def phone_validation
code = Array.new(8){rand(36).to_s(36)}.join
self.update_column(:phone_verification_code => code)
end

关于ruby-on-rails - rails 4 : after_update callback leads to endless loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146304/

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